Слайд 2Строитель
Отделяет конструирование объекта от его представления.
Позволяет использовать один и тот же процесс
конструирования для создания различных представлений.
Пример:
графическое представление должно изменять свой вид в зависимости от текущего состояния приложения так, что если в списке меньше N элементов, то отображать RadioButton; иначе – выпадающий список
Слайд 3Строитель (абстрактный предок)
public abstract class MultiChoice {
//от этого класса наследуются список
и кнопки
private Vector choices;//отображаемые сущности
public MultiChoice(Vector choiceList) {
choices = choiceList;
} //наследники реализуют следующие методы
abstract public Panel getUI();//создает панель графических компонентов
abstract public String[] getSelected(); //текущее выбранное значение(я)
abstract public void clearAll(); //сброс состояния
}
Слайд 4Строитель (наследники, они же Строители)
class ListBoxChoice extends MultiChoice {…}
class CheckBoxChoice extends MultiChoice
{...}
Слайд 5Строитель (фабрика, он же директор)
public class ChoiceFactory {
MultiChoice ui;
//Возвращает графический
контейнер с набором компонент
public MultiChoice getChoiceUI(Vector choices) {
if (choices.size() <=3){
//панель с переключателями
ui = new CheckBoxChoice(choices);
} else {
//панель со списком
ui = new ListBoxChoice(choices);
}
return ui;
}
}
Слайд 6Строитель (использование)
Vector v = null;
int index = stockList.getSelectedIndex();
choicePanel.removeAll(); //удалить старую панель
//выбор из
нескольких вариантов представлений
switch (index) {
case 0:
v = Stocks; break;
case 1:
v = Bonds; break;
}
mchoice = cfact.getChoiceUI(v);//создание представления
choicePanel.add(mchoice.getUI());//отрисовка