1 工厂方法
工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户程序中关于超类的代码就和子类对象创建代码解耦了。
工厂方法模式:定义了一个创建对象的接口,通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。
abstract Product factoryMethod(String type)
- 工厂方法是抽象的,所以依赖子类处理对象的创建
- 工厂方法返回一个产品。超类中定义的方法,通常使用到工厂方法的返回值
- 工厂方法将客户和实际创建具体产品的代码分割开来
- 工厂方法可能需要参数来指定所需要的产品
2 依赖倒置的一些指导原则
- 变量不可以持有具体类的引用。如果使用 new,就会持有具体类的引用。可以改用工厂来避开。
- 不要让类派生自具体类。如果派生自具体类,就会依赖具体类。请派生自一个抽象(接口或者抽象类)
- 不要覆盖基类中已实现的方法。如果覆盖积累已实现的方法,那么基类就不是一个正真适合被继承的抽象。基类中已实现的方法,应该由所有子类共享。
3 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。