抽象工厂模式
Posted ddsl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象工厂模式相关的知识,希望对你有一定的参考价值。
三、抽象工厂模式
主要解决:简单工厂升级版,适合产品有多于一个的产品族,而系统只消费其中某一族的产品。
优点:
-
多个产品一起工作,可以使用同一产品对象
-
易于对产品横向升级
缺点:产品族难扩展,需要修改抽象工厂及其实现
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"); } }
以上是关于抽象工厂模式的主要内容,如果未能解决你的问题,请参考以下文章