23种设计模式 VOL.2: 工厂模式
思想: 调用方无需关心具体的实现细节, 实现的细节在工厂里处理, 调用者要什么工厂里有就返回什么;
- 由各地区订购披萨案例, 引出工厂模式的思考:
- 案例模型
![]()
- 产生的问题: 增加新品披萨后每个订购区域得重新依赖新品种, 如果区域有很多后期得每个区域去改变现有代码, 这样违背了开闭原则(提供方修改代码后不应该改动调用方的代码);
- 代码实现
![]()
![]()
- 简单工厂
- 模型
- 代码实现
重复代码就不上了;
- 工厂方法
- 说明: 定义获取对象的抽象方法后具体实现由简单工厂实现, 父类调用子类实现的方法来取对象;
- 抽象工厂方法类里定义抽象方法, 抽象方法的具体实现由子类简单工厂实现, 在工厂方法类的构造方法里调用抽象方法;
- 在客户端创建子类简单工厂对象的同时会实例化父类(执行构造方法), 在父类工厂方法的构造方法里会调用子类简单工厂的方法;
- 按地区分披萨口味模型
- 代码实现
- Java中用到的地方