Простой фабричный режим
Классная диаграмма
Создать соответствующие объекты с условием через фабричный класс
// Бизнес -функции публичный интерфейс iCalculation {Double GetResult (Double Numa, Double Numb); } public Class Calcadd реализует iCalculation {@Override public double getResult (double Numa, Double numb) {System.out.println ("Add"); вернуть NUMA + umb; }} public Class CalcSubtract реализует iCalculation {@Override public double getResult (double numa, double numb) {System.out.println ("ueptraction"); вернуть NUMA - numb; }}/** Простой фабричный режим фокусируется на создании объекта* Создание фабричного класса для создания экземпляров некоторых классов, которые реализуют один и тот же интерфейс или имеют отношения наследства*/public class test4simple {public static void main (string [] args) {// string operation = "/"; String anpormation = "+"; // string anpormation = "-"; // string anpormation = "*"; Double Numa = 182, umnb = 33; ICalculation createCalc = calcSimpleFactory.createCalc (операция); Double Result = createCalC.GetResult (NUMA, numb); System.out.println (результат); }} Дефекты простой фабрики: когда простая фабрика создает продукт, необходимо передать соответствующие параметры. Если проход неверный, объект не может быть извлечен.
Улучшение: создайте разные категории продуктов несколькими способами
открытый класс calcmultiplefactory {public static icalculation provecuadd () {return new calcadd (); } public static icalculation Производство usubtract () {return new calcsubtract (); } public static icalculation provectiMultiply () {return new calcmultiply (); } public static icalculation productivide () {return new calcdivide (); }} public class test4multiple {public static void main (string [] args) {double Numa = 182, numb = 33; ICalculation createCalc = calcMultipleFactory.ProduceAdd (); Double Result = createCalC.GetResult (NUMA, numb); System.out.println (результат); createCalc = calcMultipleFactory.ProducesubTract (); result = createCalC.GetResult (NUMA, numb); System.out.println (результат); createCalc = calcMultipleFactory.ProducesubTract (); result = createCalC.GetResult (NUMA, numb); System.out.println (результат); createCalc = calcMultipleFactory.produceMultiply (); result = createCalC.GetResult (NUMA, numb); System.out.println (результат); createCalc = calcMultipleFactory.producedivide (); result = createCalC.GetResult (NUMA, numb); System.out.println (результат); }} Абстрактная заводская шаблон
В нем есть несколько концепций: абстрактная фабрика, физическая фабрика, абстрактный продукт, физический продукт абстрактного фабрики: определить абстрактный метод создания продуктов. Фабрика Entity: Конкретное создание продукта.
// Abstract Product1 Public Interface iProduct1 {public void show (); } // абстрактный продукт2 public interface iproduct2 {public void show (); } // объект Product1 Public Class Product1 реализует iProduct1 {public void show () {System.out.println ("Созданный продукт типа 1"); }} // объект продукта 2 Public Class Product2 реализует iProduct2 {public void show () {System.out.println ("Созданный продукт типа 2"); }} / * * 1a 1b принадлежит продукту1 в той же структуре иерархии продукта * 2a 2b принадлежит продукту2 * / public class gradeeproduct1a extends product1 {@override public void show () {super.show (); System.out.println («Это под продуктом 1: Продукт A»); }} открытый класс GradeeProduct1b Extends Product1 {@Override public void show () {super.show (); System.out.println («Это под продуктом 1: продукт B»); }} открытый класс GradeeProduct1b Extends Product1 {@Override public void show () {super.show (); System.out.println («Это под продуктом 1: продукт B»); }} открытый класс GradeeProduct2a Extends Product2 {@Override public void show () {super.show (); System.out.println («Это под продуктом 2: продукт A»); }} public Class GradeeProduct2b Extends Product2 {@Override public void show () {super.show (); System.out.println («Это под продуктом 2: продукт B»); }} // Abstract Factory создает различные абстрактные продукты публичный интерфейс ifactory {public iProduct1 createProduct1a (); // Класс 1 Модель продукта A Public iProduct1 CreateProduct1b (); // класс 1 Модель продукта B public iProduct2 CreateProduct2 (); // Class 2 Model a Public Public Iproduct2 Create Iproduct2 Product2 // Класс 1 Фабрика продукта создает физические продукты, тип возврата - абстрактный продукт, продукт открытый класс заводской реализации ifactory {public iProduct1 createProduct1a () {return new GradeProduct1a (); } public iProduct1 createProduct1b () {return new GradeEproduct1b (); } public iProduct2 createProduct2a () {return new GradeEproduct2a (); } public iProduct2 createProduct2b () {return new GradeProduct2b (); }} /** Аннотация Фабрика Фабрика: Используется для создания набора связанных или взаимозависимых объектов** Процесс: Аннотация Фабрика, Физическая фабрика производит продукты* Абстрактный продукт, физический продукт реализует функции продукта* Недостатки: когда вам нужно добавить продукт (состоящий из абстрактного и сущности), фабрика необходимо изменить* / public test4abstract {public static void main (string] argis). Фабрика(); IProduct1 product1a = factory.createProduct1a (); Product1a.show (); IProduct1 product1b = factory.createProduct1b (); Product1b.show (); IProduct2 product2a = factory.createProduct2a (); Product2a.show (); IProduct2 product2b = factory.createProduct2b (); Product2b.show (); }}