描述:封装一个创建对象的类,由子类决定需要实例化的类
优点:添加新产品要添加一个具体工厂和具体产品,符合开放封闭
缺点:类的个数多
应用:创建对象时,需要灵活可扩展的类时
简单工厂&工厂方法区别
- 简单工厂
- 工厂类中包含了必要的判断逻辑,根据条件动态的实例化相关的类,不同的实例会有不同的运算
- 添加新需求时,需要修改原有的类,不但对扩展开放,也对修改开放了
- 工厂方法
- 依赖倒转倒转原则,把工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品的工厂方法,所有要生成的工厂都去实现这一个接口
classDiagram class Product{ <> method1() method2() } class ConcreteProduct_1{ constructor() method1() method2() } class Creator { < > +createProduct()* Product } class ConcreteCreator{ constructor() +createProduct() Product } ConcreteCreator --|> Creator:继承 ConcreteCreator ..> ConcreteProduct_1:依赖 ConcreteProduct_1 ..|> Product:实现
- 产品接口
- 产品实现类
- 产品工厂
- 依赖产品实现类
- 创建产品实例
- 工厂的实例创建产品
1 | // 抽象产品接口 |