WEB开发网
开发学院软件开发C语言 无废话C#设计模式之三:Abstract Factory 阅读

无废话C#设计模式之三:Abstract Factory

 2009-04-02 08:21:34 来源:WEB开发网   
核心提示: 代码说明l PatrixSceneFactory就是一个抽象工厂,它声明了创建抽象的场景以及抽象的纹理的接口,无废话C#设计模式之三:Abstract Factory(2),(广告时间:Patrix是我公司的一款休闲FPS游戏,详细请见http://www.qwd1.com)l Model

代码说明

l         PatrixSceneFactory就是一个抽象工厂,它声明了创建抽象的场景以及抽象的纹理的接口。(广告时间:Patrix是我公司的一款休闲FPS游戏,详细请见http://www.qwd1.com)

l         Model和Texture是抽象产品。在Model类中有一个抽象方法,用于为模型填充纹理。

l         HalfPaper和Matrix是具体工厂,它用于创建某个场景的模型和纹理。(你可能对两个类的名字不太理解,其实HalfPaper和Matrix是两个地图的名字)

l         xxxModel和xxxTexture就是具体的产品了。它们就是针对某个场景的模型和纹理,具体工厂负责创建它们。

l         Patrix这个类负责加载场景,为了避免加载不同场景使用case语句,在这里我们使用反射来加载具体工厂类。

l         可以看到,一旦有了新的场景(或者说地图),我们只需要设计新的xxxModel和xxxTexture以及具体工厂类就可以了,加载场景的那部分代码(也就是Patrix类)不需要做改动。

l         我们现在这个游戏可是不支持和电脑对战的,万一以后需要支持电脑了,那么场景中的元素除了纹理和模型之外就还需要加电脑了。也就是说抽象工厂还需要多生产一种类型的产品,这个时候抽象工厂就无能为力了。抽象工厂只能解决系列产品扩张的变化点(在我们的例子中就是地图的新增),因此千万把抽象工厂所能生产的产品考虑周全了。

何时采用

l         从代码角度来说,你希望在统一的地方创建一系列相互关联的对象,并且基于抽象对象的时候。

l         从应用角度来说,如果你的产品是成组成套的,并且肯定会不断扩展新系列的,那么就适用抽象工厂。比如说,外面买的塑料模型,里面总是有图纸、模型元件板和外壳包装三部分。那么生产模型的厂就是抽象工厂,打印图纸、打印包装盒以及生产元件板的三个流水线就是具体工厂了。需要生产新的模型,只需要制作新的图纸输入到三个流水线的电脑中就可以了。

上一页  1 2 3 4 5  下一页

Tags:废话 设计模式 Abstract

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接