Abstract Pattern(抽象工厂模式)

解决的问题

假设你要开发一个app,app的界面支持MaterialDesign和Ant两种主题。不同的主题所用的组件是不一样的,例如按钮组件,MaterialDesign主题就是MaterialButton,Ant主题就是AntButton。
一开始可以这样设计:


未使用抽象工厂.png

每个ViewController通过判断当前的theme,实例化对应的组件。这样设计的问题是:

  1. 如果要添加新的theme,每个ViewController都要修改,改动很大。
  2. ViewController的代码量可能会很大。

这种情况可以使用抽象工厂:


使用抽象工厂.png

ViewController只和ComponentFactory打交道,ComponentFactory可以创建对应theme的全部组件。

抽象工厂和工厂模式的区别在于,工厂模式是通过工厂方法创建对象,抽象工厂是通过抽象类创建对象。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容