工程模式:实例化对象,用工程方法代替new操作。
工程模式包括工厂方法模式,和抽象工厂模式。(抽象工厂模式是工厂方法模式的扩展)
工厂模式的意图:
定义一个接口来创建对象,但是让子类来决定那些类需要被实例化。
工厂方法把实例化的工作推迟到子类中去实现。
什么情况下适合工厂模式:
有一组类似的对象需要被创建。
在编码时不能预见需要创建哪种类的实例。
系统需要考虑扩展性,不应依赖于产品类实例如何被创建、组合和表达的细节。
工厂模式的代码设计思想:
尽量松耦合,一个对象的依赖对象的变化与本身无关
具体产品与客户端剥离,责任分离
简单工厂模式实现:
public class HairFactory {
public HairInterface getHair(String hair) {
if ("left".equalsIgnoreCase(hair)) {
return new LeftHair();
} else if ("right".equalsIgnoreCase(hair)) {
return new RightHair();
}
return null;
}
}
抽象工厂模式:
抽象共工厂模式就是在工厂模式的基础上再在做一层封装,通过抽象的工厂产生不同的工厂类。