new的问题
Road road = newRoad();
实现依赖,不能应对“具体实例化类型”的变化。
解决思路
封装变化点!
如果没有变化,不要额外的封装
简单工厂(静态工厂)
封装“对象创建”
面向接口编程 依赖接口,而非依赖实现
public classRoadFactory
{
public static Road CreateRoad()
{
return new Road();
}
}
//***********客户程序**************//
Road road =RoadFactory.CreateRoad();
简单工厂的问题
不能应对“不同系列对象”的变化。
动机(Motivation)
处理“一系列相互依赖的对象”的创建工作
由于需求变化,往往存在 更多系列对象的创建工作
提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合
意图(Intent)
提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定他们具体的类。