标签:ade ctc create 模式 public image plain eth rod
主要解决:简单工厂升级版,适合产品有多于一个的产品族,而系统只消费其中某一族的产品。
优点:
多个产品一起工作,可以使用同一产品对象
易于对产品横向升级
缺点:产品族难扩展,需要修改抽象工厂及其实现
UML类图
实现:
*注:
// 工厂抽象类 用于创建产品组里所有产品 *不易于扩展其他产品 public interface AbstractFactory { Product createProductA(); Product createProductB(); }
// 产品抽象类 约定产品公用属性以及方法 public interface Product { void doSomething(); }
/** * 产品创造工厂 * 此处实验约定 产品工厂1 生产类型1的 A、B 产品 * 产品工厂2 生产类型2的 A、B 产品 */ // 产品工厂1 public class Product1Factory implements AbstractFactory { @Override public Product createProductA() { return new ProductA_1(); } @Override public Product createProductB() { return new ProductB_1(); } }
// 产品工厂2 public class Product2Factory implements AbstractFactory { @Override public Product createProductA() { return new ProductA_2(); } @Override public Product createProductB() { return new ProductB_2(); } }
// A产品抽象类类 这里也可直接实现产品接口,实现具体产品 public abstract class ProductA implements Product { public abstract void doSomething(); } ? // 1类 A产品 public class ProductA_1 extends ProductA { @Override public void doSomething() { System.out.println("ProductA_1"); } } ? // 2类 A产品 public class ProductA_2 extends ProductA { @Override public void doSomething() { System.out.println("ProductA_2"); } }
// B产品抽象类类 public abstract class ProductB implements Product { public abstract void doSomething(); } ? // 1类 B产品 public class ProductB_1 extends ProductB { @Override public void doSomething() { System.out.println("ProductB_1"); } } ? // 2类 B产品 public class ProductB_2 extends ProductB { @Override public void doSomething() { System.out.println("ProductB_2"); } }
标签:ade ctc create 模式 public image plain eth rod
原文地址:https://www.cnblogs.com/Ddsl/p/13176640.html