Определение заводского метода шаблона
Значение заводского метода шаблона заключается в определении заводского интерфейса для создания объектов продукта и откладывания фактической работы создания на подклассы. Основной заводский класс больше не несет ответственности за создание продукта, поэтому основной класс становится абстрактной заводской ролью и несет ответственность только за интерфейсы, которые должны быть реализованы конкретными заводскими подклассами. Преимущество дальнейшей абстракции состоит в том, что модель фабричного метода может позволить системе вводить новые продукты без изменения конкретной заводской роли.
Он содержит следующие роли:
Схема класса UML
Пример
Предположим, что есть три пополнения, а именно красные пополнения, синие заправки и черные пополнения. Пользователи надеются использовать ручки с шариками, чтобы прояснить цвет пополнения.
Описание и использование структуры шаблона
1. Аннотация продукт: pencore.java
открытый абстрактный класс pencore {string color; Public Abstract void writeword (String s);} 2. Конкретный продукт (ConceteProduct) _1: redpencore.java
Public Class Redpencore Extens Pencore {redpencore () {color = "red"; } public void writeword (String s) {System.out.println ("написать слово"+color+":"+s); }} Конкретный продукт (ConceteProduct) _2: Bluepencore.java
Public Class Bluepencore Extens Pencore {bluepencore () {color = "blue"; } public void writeword (String s) {System.out.println ("написать слово"+color+":"+s); }} Конкретный продукт (ConceteProduct) _3: Blackpencore.java
Public Class BlackPencore расширяет pencore {blackpencore () {color = "black"; } public void writeword (String s) {System.out.println ("написать слово"+color+":"+s); }} 3. Конструктор: Ballpen.java
Public Abstract Class Ballpen {Ballpen () {System.out.println («Получил шариковую ручку с"+getPencore (). Color+"Refill Core"); } public Abstract pencore getPencore (); // фабричный метод} 4. ConceteCreator:
Redballpen.javapublic class redballpen расширяет Ballpen {public pencore getpencore () {return new redpencore (); }} Blueballpen.javapublic class blueballpen расширяет Ballpen {public pencore getpencore () {return new bluepencore (); }} Blackballpen.javapublic class blackballpen расширяет Ballpen {public pencore getpencore () {return new Blackpencore (); }} 5. Application.java
Приложение открытого класса {public static void main (string args []) {pencore pencore; Ballpen Ballpen = new Blueballpen (); pencore = ballpen.getpencore (); pencore.writeword («Привет, я рад узнать тебя»); Ballpen = new Redballpen (); pencore = ballpen.getpencore (); pencore.writeword («Как дела»); Ballpen = new BlackballPen (); pencore = ballpen.getpencore (); pencore.writeword («Приятно познакомиться»); }} Суммировать
Заводской шаблон метода принадлежит шаблону создания класса. В режиме заводского метода заводской родительский класс отвечает за определение публичного интерфейса для создания объектов продукта, в то время как заводский подкласс отвечает за создание конкретных объектов продукта. Цель этого состоит в том, чтобы задержать работу экземпляра класса продукта на заводской подкласс, то есть определить, какой конкретный класс продукта следует создавать через подкласс завода.
Модель фабричного метода - это дальнейшая абстракция и продвижение простой заводской модели. Из-за использования объектно-ориентированного полиморфизма заводской паттерн поддерживает преимущества простой заводской паттерна и преодолевает его недостатки. В модели фабричного метода основной фабричный класс больше не несет ответственности за создание всех продуктов, а скорее дает конкретную работу создания подклассу. Этот основной класс несет ответственность только за предоставление интерфейсам, которые должны реализовать конкретную фабрику, но не детали экземпляра класса продукта. Это позволяет модели метода завода позволить системе вводить новые продукты без изменения роли завода. Основным преимуществом модели метода завода является то, что при добавлении новых классов продуктов ей не нужно модифицировать существующую систему и инкапсулирует детали создания объекта продукта. Система имеет хорошую гибкость и масштабируемость; Его недостаток заключается в том, что он требует добавления новых заводов при добавлении новых продуктов, что приводит к парам системных классов, что в определенной степени увеличивает сложность системы.