Абстрактная фабрика Описание шаблона
1. Проблемы с моделью метода завода: в модели фабрики метод создание классов требует прохождения через заводский класс. Если вы хотите расширить программу, вы должны изменить заводский класс. Это нарушает принцип закрытия, открывается для расширений и закрывается для модификаций; Есть определенные проблемы с дизайном.
2. Как его решить: вам нужно использовать абстрактную заводскую модель, что означает создание заводских классов для функциональных классов отдельно, чтобы вам не приходилось изменять предыдущий код и расширять функции.
3. Заводская модель фактически создает вызовы в единый фабричный метод реализации класса реализации, который реализует тот же интерфейс, но JavaScript не имеет номера интерфейса, поэтому этот уровень реализации удаляется, но элементы и методы класса функции бита должны быть одинаковым;
Абстрактный пример исходного кода фабрики
1. Электронная почта отправка класса :
Кода -копия выглядит следующим образом:
function mailsender () {
this.to = '';
this.title = '';
this.content = '';
}
Mailsender.prototype.send = function () {
// отправить тело
}
2. SMS -отправка класса:
Кода -копия выглядит следующим образом:
функция smssender () {
this.to = '';
this.title = '';
this.content = '';
}
Smssender.prototype.send = function () {
// отправить тело
}
3. Это изначально класс заводского интерфейса, но он удален здесь; непосредственно создавать различные функциональные классовые фабрики ;
1>. Категория почтовой фабрики:
Кода -копия выглядит следующим образом:
function mailFactory () {
}
MailFactory.prototype.produce = function () {
вернуть новый MailSender ();
}
2>. СМС фабричная категория:
Кода -копия выглядит следующим образом:
function smsfactory () {
}
Smscecfactory.prototype.produce = function () {
вернуть новый Smssender ();
}
4. Как использовать:
Кода -копия выглядит следующим образом:
var factory = new MailFactory ();
var sender = factory.produce ();
sender.to = 'toname#mail.com';
sender.title = 'абстрактный заводской шаблон';
sender.content = 'Отправить контент';
sender.send ();
Другие инструкции
Фабричный режим, используемый на объектно-ориентированных языках, таких как Java и .net C#, используют интерфейсы. Интерфейсы являются доступными методами, чтобы подвергать различных внешних пользователей, объясняя, какие методы применять эту функцию и как пользователи должны использовать этот интерфейс. Объекты выражаются в форме классов, представляющих некоторую абстракцию в реальном мире. Возможно, сцена будет иметь много подобных приложений, таких как отправка по электронной почте, отправка SMS и различные методы рекламных акций в торговом центре, а также различные птицы и зверь в животном мире.
Если мы не предоставим пользователям использование пользователя в форме интерфейса, мы неизбежно предоставим пользователям реальные функциональные объекты класса, и пользователи могут изменять и расширять объекты класса по желанию, что не разрешено.
Режим заводского метода и абстрактный заводский режим могут хорошо решать такие проблемы. Пользователи могут использовать интерфейс только для вызова заводского класса для выполнения определенных операций; Режим абстрактного завода дополнительно использует функцию расширения, а функциональный класс и класс заводского класса реализуют соответствующее расширение уровня класса на соответствующем интерфейсе и не будут включать изменение других классов или методов;