工厂模式
- 简单工厂不是一种设计模式,可以称之为编程习惯,将变化抽离,做到程序之间解耦
- 静态工厂:利用静态方法定义一个简单的工厂;特点:不需要使用创建对象的方法来实力化对象,这也导致不能通过继承来改变创建方法的行为。
- 抽象工厂:定义抽象的产品族创建者,让具体的产品族创建者去创建产品。
定义
工厂方法模式:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实力化推迟到子类。
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
示例
简单工厂:将创建pizza 的方法从pizza store中抽离,定义到factory中,这样,pizza的创建过程就和pizza store的订购流程解耦。
静态工厂:将pizza的创建,抽取到静态方法中
工厂方法:将pizza store定义为抽象,子类自定义实现pizza 的创建,让程序的扩展性更好,比简单工厂更容易扩展,适用更多的场景
抽象工厂:提供接口用于创建相关或依赖对象的家族,而不需要明确指定具体类
第四章总结
依赖导致原则指导方针:
- 变量不可以持有具体类的引用(不使用new直接创建对象引用)
- 不要让类派生自具体类(派生自具体类则依赖具体类,应该派生自抽象类)
- 不要覆盖基类中已实现的方法
- 工厂方法和抽象工厂都负责创建对象,但工厂方法通过继承,抽象工厂通过组合,意味着工厂方法创建对象需要扩展一个类,并覆盖工厂方法。
OO基础
抽象、封装、多态、继承
OO原则
封装变化
多用组合、少用继承
针对接口编程、不针对实现编程
为交互对象之间的松耦合设计努力
对扩展开放,对修改关闭
依赖抽象,不依赖具体
OO模式
抽象工厂模式---提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。
工厂方法模式---定义一个创建对象的接口,由子类决定要实例化的类。工厂方法让类把实例化推迟到子类