C#面向对象设计模式纵横谈---Abstract Factory 抽象工厂(创建型模式)

new的问题
// 创建一个Road 对象

Road road=new Road(); 

new的问题:

– 实现依赖,不能应对“具体实例化类型”的变化。 

工厂模式的缘起 

变化点在“对象创建”,因此就封装“对象创建”

• 面向接口编程——依赖接口,而非依赖实现 

最简单的解决方法:
class RoadFactory {
public static Road CreateRoad()
{
return new Road();
}
}
// 创建一个Road 对象
Road road=

roadFactory.CreateRoad(); 

 

假设一个游戏开发场景:
我们需要构造“道路”、
“房屋”、“地道”、“丛

林”……等等对象 

简单的静态工厂: 

class RoadFactory {
public static Road CreateRoad()
{
return new Road();
}
public static Building
CreateBuilding ()
{
return new Building();
}
public static Tunnel
CreateTunnel ()
{
return new Tunnel();
}
public static Jungle
CreateJungle()
{

return new Jungle(); 

 

Road road=
roadFactory.CreateRoad(
);
Building building=

roadFactory.CreateBuild 

 

简单工厂的问题:
– 不能应对“不同系列对象”的变化。比如有不同风格的游

戏场景——对应不同风格的道路、房屋、地道…… 

AbstractFactory模式主要有应对“多系列对象构建”的需求变化。

AbstractFactory模式的结构图:

pasting 

 

 

 


posted @ 2012-06-29 10:48  美梦成真  阅读(111)  评论(0编辑  收藏  举报