C#设计模式 之 抽象工厂模式.doc
《C#设计模式 之 抽象工厂模式.doc》由会员分享,可在线阅读,更多相关《C#设计模式 之 抽象工厂模式.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、抽象工厂(Abstract Factory) 常规的对象创建方法:/创建一个Road对象Roadroad=newRoad();new 的问题: 实现依赖,不能应对“具体实例化类型”的变化。解决思路: 封装变化点-哪里变化,封装哪里 潜台词: 如果没有变化,当然不需要额外的封装!工厂模式的缘起 变化点在“对象创建”,因此就封装“对象创建” 面向接口编程-依赖接口,而非依赖实现最简单的解决方法:1classRoadFactory2publicstaticRoadCreateRoad()34returnnewRoad();567/创建一个Road对象8Roadroad=roadFactory.Cre
2、ateRoad();创建一系列相互依赖对象的创建工作:假设一个游戏开场景:我们需要构造道路、房屋、地道,从林.等等对象工厂方法如下:1classRoadFactory23publicstaticRoadCreateRoad()45returnnewRoad();67publicstaticBuildingCreateBuilding()89returnnewBuilding();1011publicstaticTunnelCreateTunnel()1213returnnewTunnel();1415publicstaticJungleCreateJungle()1617returnnewJu
3、ngle();1819调用方式如下: 1Roadroad= RoadFactory.CreateRoad();3Buildingbuilding=RoadFactory.CreateBuilding();4Tunneltunnel=RoadFactory.CreateTunnel();5Junglejungle=RoadFactory.CreateJungle();如上可见简单工厂的问题: 不能应对不同系列对象的变化。比如有不同风格的场景-对应不同风格的道路,房屋、地道.如何解决: 使用面向对象的技术来封装变化点。动机(Motivate): 在软件系统中,经常面临着一系统相互依赖的对象的创建工
4、作:同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种封装机制来避免客户程序和这种多系列具体对象创建工作的紧耦合?意图(Intent): 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 -设计模式GOF结构图(Struct): 适用性: 1.一个系统要独立于它的产品的创建、组合和表示时。 2.一个系统要由多个产品系统中的一个来配置时。 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 4.当你提供一个产品类库,而只想显示它们的接口不是实现时。生活例子: 结构图代码实现:1abstractcl
5、assAbstractFactory23publicabstractAbstractProductACreateProductA();4publicabstractAbstractProductBCreateProductB();51abstractclassAbstractProductA23publicabstractvoidInteract(AbstractProductBb);41abstractclassAbstractProductB23publicabstractvoidInteract(AbstractProductAa);41classClient23privateAbstr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#设计模式 抽象工厂模式 C# 设计 模式 抽象 工厂
限制150内