一、创建型模式
1 简单工厂
- 定义
通过在,简单工厂的new函数中,根据传入的参数或条件,返回不同类型的对象实例。
这样的话,调用者就不需要,知道对象的具体创建过程,就可以得到对象实例。 - 优点
- 隐藏对象的创建逻辑
- 解耦对象的创建和使用
- 灵活性高:如果需要新增一种产品,只需要修改简单工厂类,不需要修改使用的函数
- 缺点
- 扩展性差:所有产品的创建都在一个工厂中,当需要添加新产品,或者删除产品,需要修改工厂的代码,违反了开闭原则
- 违背单一职责原则:简单工厂类负责对象的创建的时候,需要包含了一些业务逻辑,导致类的职责不够单一。
- 工厂类的职责过重:随着产品类型的增多,工厂类的代码会越来越臃肿,不利于代码的维护和扩展。
- 适用场景
- 对象的创建逻辑相对简单,不涉及复杂的业务处理。
- 需要创建的对象比较少(仅创建几个类问题不大,如果数量扩展到数百个,意味着写一堆if else,代码臃肿。)
- 示例
- 实现:实现主要分为三部分:
- 1.构造函数:根据传入的参数,返回,所选择类型的指针(返回工厂的不同类型的产品)(在这个示例中是食物工厂,返回结果是各种类型的食物)
- 2.定义一个方法接口(工厂生产的产品,的相同特性)(在这个示例中,产物是食物,共性就是都能被吃,不管生产出什么产品,都是被用来吃的)(这也是使用简单工厂的原因,它们都有相同的特性)
- 3.实际的每个产品,和它们的实现。(工厂的不同类型的产品的具体实现,需要包括共同方法的实现)(在这个示例中,一共有三种食物,苹果apple,香蕉banana,猪肉pork)
- 实现:实现主要分为三部分:
2 工厂方法模式
简单工厂是工厂方法的一种特殊情况。