Слайд 2Строитель
Отделяет конструирование объекта от его представления.
Позволяет использовать один и тот же процесс
![Строитель Отделяет конструирование объекта от его представления. Позволяет использовать один и тот](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368776/slide-1.jpg)
конструирования для создания различных представлений.
Пример:
графическое представление должно изменять свой вид в зависимости от текущего состояния приложения так, что если в списке меньше N элементов, то отображать RadioButton; иначе – выпадающий список
Слайд 3Строитель (абстрактный предок)
public abstract class MultiChoice {
//от этого класса наследуются список
![Строитель (абстрактный предок) public abstract class MultiChoice { //от этого класса наследуются](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368776/slide-2.jpg)
и кнопки
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
![Строитель (наследники, они же Строители) class ListBoxChoice extends MultiChoice {…} class CheckBoxChoice extends MultiChoice {...}](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368776/slide-3.jpg)
{...}
Слайд 5Строитель (фабрика, он же директор)
public class ChoiceFactory {
MultiChoice ui;
//Возвращает графический
![Строитель (фабрика, он же директор) public class ChoiceFactory { MultiChoice ui; //Возвращает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368776/slide-4.jpg)
контейнер с набором компонент
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(); //удалить старую панель
//выбор из
![Строитель (использование) Vector v = null; int index = stockList.getSelectedIndex(); choicePanel.removeAll(); //удалить](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368776/slide-5.jpg)
нескольких вариантов представлений
switch (index) {
case 0:
v = Stocks; break;
case 1:
v = Bonds; break;
}
mchoice = cfact.getChoiceUI(v);//создание представления
choicePanel.add(mchoice.getUI());//отрисовка