К чему это я? Продолжаем нашу сагу о том, как не изобретать велосипед.
Бары это все хорошо, но далеко. Пусть есть классы кнопочек для графического интерфейса. Для каждой ОС они свои но я хочу получать кнопочку под текущую ОС и не напрягать себя лишними проверками. Что я делаю - создаю отдельный класс, который будет мне выдавать нужную мне кнопочку. Так.. пожалуй достаточно, надо ближе к коду.
Абстрактная кухня
public interface AbstractCook {
Dish getDish();
Drink getDrink();
}
Мексиканская кухня
public class MexicoCook imlements AbstractCook {
@Override
public Dish getDish(){
return new Burrito();
}
@Override
public Drink getDrink(){{
return new Tequila();
}
}
А вот немецкая
public class GermanCook imlements AbstractCook {
@Override
public Dish getDish(){
return new Meat();
}
@Override
public Drink getDrink(){{
return new Bear();
}
}
разница, думаю, заметна)
а теперь об использовании счастья
class User {
eatSomething(AbstractCook cook){
cook.getDish();
}
}
В этом участке кода пользователь не знает что он съел, а значит можно писать программу для всех возможных вариантов пищеупотребления.
Переходим на новый уровень абстракции вместе!
пример неплохой, но по большей мере лажа...
ОтветитьУдалитьбыло бы интересно почитать про назначение паттерна, детальном его описании, структуре и ключевых моментах архитектуры.
ИМХО