抽象工厂模式
抽象工厂模式的基础概念
1.抽象工厂(Abstract Factory Pattern)的基础概念
隶属于设计模式中的创建型模式,用于产品族的构建,抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。
- 抽象工厂中的几个角色以及功能
- 抽象工厂类:抽象工厂类负责定义创建对象的接口,具体这一系列对象的创建工作由实现抽象工厂的具体工厂类来完成(子类),与业务逻辑无关。
- 具体工厂类:客户端调用创建产品的实例,内部还有选择合适的产品对象的逻辑,与业务逻辑紧密相关
- 抽象产品类:工厂方法模式所创建的对象的父类,或他们拥有的接口。
- 具体产品类:抽象工厂模式所创建的任何产品对象都是某一个具体产品的实例。
- 优缺点
优点
- 分离了具体的类
- 便捷的交换产品
- 有利于产品的一致性
缺点
难以支持新种类的产品,因为抽象工厂接口确定了可以被创建的产品集合,所以难以扩展抽象工厂以生产新种类的产品。
- 应用场景
Java
- 场景描述: 一个外包公司,接到两家不同公司的项目需求,两家公司在处理数据中用到了不同的数据库,分别用了SQL Server和Access,两者使用方法不同,如果用传统的方式,就需要更换大量的代码,此时,可以考虑运用抽象工厂模式,对相关功能进行抽取。
- 实现代码:github.com/YinMengHao/…
- 此场景的抽象工厂模式存在的问题:但需要新增新的产品(Department部门表)时,需要创建Department相关的工厂和产品,还需要调整抽象类中的方法,违背了设计模式中的开闭幕原则。
- 针对此场景,寻求解决方案:
用简单工厂来改进抽象工厂,去除原来的工厂(一个抽象工厂+两个具体工厂),用DataAccess类代替
对应的UML图如下:
iOS
- 场景描述:
一个tableview中包含多种类型的cell - 实现代码:github.com/YinMengHao/…
- 更多借鉴:cloud.tencent.com/developer/a…