设计模式之抽象工厂模式

143 阅读2分钟

抽象工厂模式

抽象工厂模式的基础概念

1.抽象工厂(Abstract Factory Pattern)的基础概念

隶属于设计模式中的创建型模式,用于产品族的构建,抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。

  1. 抽象工厂中的几个角色以及功能
  1. 抽象工厂类:抽象工厂类负责定义创建对象的接口,具体这一系列对象的创建工作由实现抽象工厂的具体工厂类来完成(子类),与业务逻辑无关。
  2. 具体工厂类:客户端调用创建产品的实例,内部还有选择合适的产品对象的逻辑,与业务逻辑紧密相关
  3. 抽象产品类:工厂方法模式所创建的对象的父类,或他们拥有的接口。
  4. 具体产品类:抽象工厂模式所创建的任何产品对象都是某一个具体产品的实例。
  1. 优缺点

优点

  1. 分离了具体的类
  2. 便捷的交换产品
  3. 有利于产品的一致性

缺点

难以支持新种类的产品,因为抽象工厂接口确定了可以被创建的产品集合,所以难以扩展抽象工厂以生产新种类的产品。

抽象工厂模式.png

  1. 应用场景
    Java
  • 场景描述: 一个外包公司,接到两家不同公司的项目需求,两家公司在处理数据中用到了不同的数据库,分别用了SQL Server和Access,两者使用方法不同,如果用传统的方式,就需要更换大量的代码,此时,可以考虑运用抽象工厂模式,对相关功能进行抽取。
  • 实现代码:github.com/YinMengHao/…
  • 此场景的抽象工厂模式存在的问题:但需要新增新的产品(Department部门表)时,需要创建Department相关的工厂和产品,还需要调整抽象类中的方法,违背了设计模式中的开闭幕原则
  • 针对此场景,寻求解决方案:

用简单工厂来改进抽象工厂,去除原来的工厂(一个抽象工厂+两个具体工厂),用DataAccess类代替

对应的UML图如下:

抽象工厂模式进化.jpeg iOS