Modèle d'usine abstraite
Il contient plusieurs concepts : Usine abstraite, Entity Factory, Produit abstrait, Produit d'entité
Usine abstraite : Définir des méthodes abstraites pour créer des produits
Usine d'entité : Plus précisément, quel type de produit créer
Produit abstrait : Une interface ou une classe de base
Produit d'entité : Implémenter des fonctions spécifiques ou dériver
Diagramme de classes
//抽象产品1 public interface IProduct1 { public void show(); }
//抽象产品2 public interface IProduct2 { public void show(); }
//实体产品1 public class Product1 implements IProduct1 { public void show() { System.out.println("创建了1型产品"); } }
//实体产品2 public class Product2 implements IProduct2 { public void show() { System.out.println("创建了2型产品"); } }
/* * 1A 1B属于Product1 同一产品等级结构中 * 2A 2B属于Product2 */ public class GradeProduct1A extends Product1 { @Override public void show() { super.show(); System.out.println("这是产品1下的:产品A"); } }
public class GradeProduct1B extends Product1 { @Override public void show() { super.show(); System.out.println("这是产品1下的:产品B"); } }
public class GradeProduct2A extends Product2 { @Override public void show() { super.show(); System.out.println("这是产品2下的:产品A"); } }
public class GradeProduct2B extends Product2 { @Override public void show() { super.show(); System.out.println("这是产品2下的:产品B"); } }
//抽象工厂 创建不同的抽象产品 public interface IFactory { public IProduct1 createProduct1A();//1类产品 型号A public IProduct1 createProduct1B();//1类产品 型号B public IProduct2 createProduct2A();//2类产品 型号A public IProduct2 createProduct2B();//2类产品 型号B }
//实体工厂 创建实体产品,返回类型为抽象产品 public class Factory implements IFactory { public IProduct1 createProduct1A() { return new GradeProduct1A(); } public IProduct1 createProduct1B() { return new GradeProduct1B(); } public IProduct2 createProduct2A() { return new GradeProduct2A(); } public IProduct2 createProduct2B() { return new GradeProduct2B(); } }
/* * 抽象工厂模式:用来创建一组相关或者相互依赖的对象 * * 流程:抽象工厂,实体工厂 生产产品 * 抽象产品,实体产品 实现产品功能 * 缺点:当需要增加一个产品(由抽象和实体构成),工厂都需要更改 */ public class Test4Abstract { public static void main(String[] args) { IFactory factory = new Factory(); IProduct1 product1a = factory.createProduct1A(); product1a.show(); IProduct1 product1b = factory.createProduct1B(); product1b.show(); IProduct2 product2a = factory.createProduct2A(); product2a.show(); IProduct2 product2b = factory.createProduct2B(); product2b.show(); } }
Articles connexes :
Modèle de conception JAVA - Modèle d'usine abstrait
Modèle d'usine simple PHP, modèle de méthode d'usine et abstrait Comparaison de modèles d'usine
Développement orienté objet PHP - modèle d'usine abstrait
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!