设计模式3:abstract factory(抽象工厂)

设计模式3:abstract factory(抽象工厂)

ID:11993878

大小:25.56 KB

页数:4页

时间:2018-07-15

设计模式3:abstract factory(抽象工厂)_第1页
设计模式3:abstract factory(抽象工厂)_第2页
设计模式3:abstract factory(抽象工厂)_第3页
设计模式3:abstract factory(抽象工厂)_第4页
资源描述:

《设计模式3:abstract factory(抽象工厂)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、无废话C#设计模式之三:AbstractFactory意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。场景还是上次说的那个网络游戏,定下来是一个休闲的FPS游戏。和CS差不多,8到16个玩家在游戏里面分成2组对战射击。现在要实现初始化场景的工作。要呈现一个三维物体一般两个元素是少不了的,一是这个物体的骨架,也就是模型,二就是这个骨架上填充的纹理。我们知道,这样的一个游戏不可能只有一张地图,而且地图的数量肯定是会一直增加的。如果游戏在初始化场景的时候需要根据不同的地图分别加载模型和纹理对象,那么势必

2、就会使得场景的扩充变得很不方便。由此,我们引入AbstractFactory,抽象工厂生产的都是实际类型的接口(或者抽象类型),如果加了新的场景可以确保不需要修改加载场景的那部分代码。示例代码usingSystem;usingSystem.Reflection;namespaceAbstractFactoryExample{classProgram{staticvoidMain(string[]args){Patrixpatrix=newPatrix();patrix.LoadScene("HalfPaper");pat

3、rix.LoadScene("Matrix");}}classPatrix{privatePatrixSceneFactoryGetGameScene(stringgameSceneName){return(PatrixSceneFactory)Assembly.Load("AbstractFactoryExample").CreateInstance("AbstractFactoryExample."+gameSceneName);}publicvoidLoadScene(stringgameSceneName){Pa

4、trixSceneFactorypsf=GetGameScene(gameSceneName);Texturetexture=psf.CreateTexture();Modelmodel=psf.CreateModel();model.FillTexture(texture);}}abstractclassPatrixSceneFactory{publicabstractModelCreateModel();publicabstractTextureCreateTexture();}abstractclassModel{

5、publicabstractvoidFillTexture(Texturetexture);}abstractclassTexture{}classHalfPaper:PatrixSceneFactory{publicoverrideModelCreateModel(){returnnewHalfPaperModel();}publicoverrideTextureCreateTexture(){returnnewHalfPaperTexture();}}classHalfPaperModel:Model{publicH

6、alfPaperModel(){Console.WriteLine("HalfPaperModelCreated");}publicoverridevoidFillTexture(Texturetexture){Console.WriteLine("HalfPaperModelisfilledTexture");}}classHalfPaperTexture:Texture{publicHalfPaperTexture(){Console.WriteLine("HalfPaperTextureCreated");}}cl

7、assMatrix:PatrixSceneFactory{publicoverrideModelCreateModel(){returnnewMatrixModel();}publicoverrideTextureCreateTexture(){returnnewMatrixTexture();}}classMatrixModel:Model{publicMatrixModel(){Console.WriteLine("MatrixModelCreated");}publicoverridevoidFillTexture

8、(Texturetexture){Console.WriteLine("MatrixModelisfilledTexture");}}classMatrixTexture:Texture{publicMatrixTexture(){Console.WriteLine("MatrixTextureCreated");}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。