Описание режима строителя
1. Разделите построение сложного объекта от его представления, чтобы один и тот же процесс создания мог иметь разные представления. Это называется шаблоном строителя.
2. Описание на объектно-ориентированном языке, основные роли:
1>. Класс интерфейса строителя определяет строитель [работника], единый и оперативный способ поведения, который представляет собой сложный структурный объект;
2>. ConcreteBuilder используется для создания объектов экземпляров различных форм строителя для представления различных представлений строителя;
3>. Директор Этот командир используется для руководства процессом выполнения и формы экземпляра Builder, который используется для отделения от производительности экземпляра Builder и используется для руководства экземпляром Builder для создания и генерации результатов продукта в определенном порядке правила;
4>. Результаты, созданные ResultObject, будут генерировать объект результата; Это результат, созданный конкретным создателем на основе руководства директора;
3. Модель застройщика на самом деле является командиром, строителем и клиентом, который использует командира, чтобы назвать конкретного строителя работать и может привлечь результаты от конкретного строителя;
4. Режим строителя, смоделированный сценарий: [см. Хороший пример, который иллюстрирует описание режима строителя]
Говорят, что член семьи хочет построить дом, но владелец дома или других людей в семье не знает, как построить дом, поэтому он должен нанять нескольких рабочих. Команда здания дома должна иметь мастера построить дом в соответствии с идеями владельца. Форман разрабатывает и требует, чтобы работники делали то, что они делают в соответствии с требованиями владельца;
Форган сказал, что первым шагом является построение всего скелета дома, второй шаг - построить спальню, третий шаг - украсить кухню, четвертый шаг - построить гостиную, а пятый шаг - ...
Бордитель ничего не делает, но конкретный строитель должен делать это в соответствии с требованиями мастера. Первые и вторые шаги построены до тех пор, пока весь дом не будет завершен;
Создатель должен обладать всеми навыками для создания этого дома, а именно, строительства скелетов, украшения спальни и т. Д., То есть то, что строитель делает или обладает способностями, должен быть больше или равным тому, что требуется командир, или обладает способностями;
То есть командир является организатором, а строитель дает навыки;
5. на слабом языке, как JavaScript, если нет такой вещи, как интерфейс, игнорируйте слой определения интерфейса, напрямую создайте конкретный строитель, а затем создайте класс руководств, чтобы вызвать застройщика;
Исходный код экземпляра
1. Рабочий строитель x:
Кода -копия выглядит следующим образом:
Function WorkerBuilder () {
this.workone = function () {
// Построить скелет
}
this.worktwo = function () {
// Построить спальню
}
this.workthree = function () {
// построить кухню
}
this.workfour = function () {
// построить гостиную
}
// ...
this.getResult = function () {
// построить дом
var house = new House ();
//house.houseframe ...
возвратный дом;
}
}
Workbuilder - это специфический строитель, Workone, два - это то, что делать, строить скелеты и т. Д.;
Конечно, Workbuilder может быть построен еще несколько, чтобы указать, что работники выполняют разные методы для каждой работы; Но рабочая контент такой же;
2. Командующий категория
Кода -копия выглядит следующим образом:
Функциональный режиссер () {
this.construct = function (builder) {
Builder.workone ();
builder.worktwo ();
Builder.WorkThree ();
Builder.WorkFour ();
// ...
// Приведенное выше контент может быть установлен в последовательности, и рабочие элементы также могут быть установлены.
}
}
Метод руководства в категории Commander включает в себя ссылки на обратный вызов на строитель, в том числе несколько или все рабочее содержимое строителя; Командир организует и организует то, что нужно делать работникам -строителям;
3. Дом продукта
Кода -копия выглядит следующим образом:
функциональный дом () {
this.houseFrame = '';
this.room = '';
this.kitchen = '';
this.livingroom = '';
// ...
}
4. Как использовать
Кода -копия выглядит следующим образом:
var builder = new Workbuilder ();
var Director = новый директор ();
Director.Construct (Builder);
var house = builder.getresult ();
Четвертый шаг заключается в том, что все использование эквивалентно клиенту: владельцу дома. Владелец просит директора построить дом, но мастер ничего не делает, поэтому он направляет работника строителя построить ребенка, и, наконец, владелец получает построенный дом от работника;
Другие инструкции
Модель застройщика более подходит, для которой контент [аннотация] сложна, и фактические сцены различны, такие как ситуация, когда рабочее содержание или порядок непоследовательны; Например, повседневная жизнь каждого человека и сцены, похожие на примеры выше; Благодаря слою инструктора можно уменьшить окружающую среду, в которой многие подобные рабочие места, но порядок рабочих правил является непоследовательным; Это может значительно уменьшить абстракцию конструкции реальных объектов;