1、抽象工厂(AbstractFactory)常规的对象创建方法://创建一个Road对象Road road =new Road();new的问题: 实现依赖,不能应对“具体实例化类型”的变化。解决思路: 封装变化点-----哪里变化,封装哪里 潜台词:如果没有变化,当然不需要额外的封装!工厂模式的缘起 变化点在“对象创建”,因此就封装“对象创建” 面向接口编程----依赖接口,而非依赖实现最简单的解决方法:1 class RoadFactory{2 public static Road C
2、reateRoad()3 { 4 return new Road(); 5 }6 }7 //创建一个Road对象8 Road road=roadFactory.CreateRoad();创建一系列相互依赖对象的创建工作:假设一个游戏开场景:我们需要构造"道路"、"房屋"、"地道","从林"...等等对象工厂方法如下: 1 class RoadFactory 2 { 3 public static Road
3、CreateRoad() 4 { 5 return new Road(); 6 } 7 public static Building CreateBuilding() 8 { 9 return new Building();10 }11 public static Tunnel CreateTunnel()12 {13 ret
4、urn new Tunnel();14 }15 public static Jungle CreateJungle()16 {17 return new Jungle();18 }19 }调用方式如下:1 Road road = RoadFactory.CreateRoad();3 Building building = RoadFactory.CreateBuilding();4
7、产品系统中的一个来配置时。 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 4.当你提供一个产品类库,而只想显示它们的接口不是实现时。生活例子: 结构图代码实现:1 abstract class AbstractFactory2 {3 public abstract AbstractProductA CreateProductA();4 public abstract AbstractProductB CreateProd
8、uctB();5 }1 abstract class AbstractProductA2 {3 public abstract void Interact(AbstractProductB b);4 }1 abstract class AbstractProductB2 {3 public abstract void Interact(Abstr