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