- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C设计模式之抽象工厂模式
HYPERLINK /abcdwxc/archive/2007/08/29/874891.html 抽象工厂(Abstract Factory)
常规的对象创建方法:
//创建一个Road对象Road?road?=new?Road();
new 的问题:??? 实现依赖,不能应对“具体实例化类型”的变化。解决思路:??? 封装变化点-----哪里变化,封装哪里??? 潜台词: 如果没有变化,当然不需要额外的封装!工厂模式的缘起??? 变化点在“对象创建”,因此就封装“对象创建”??? 面向接口编程----依赖接口,而非依赖实现最简单的解决方法:
1?class?RoadFactory{2?public?static?Road?CreateRoad()3?{????????????????????????????????4???return?new?Road();???5?}6?}7?//创建一个Road对象8?Road?road=roadFactory.CreateRoad();
创建一系列相互依赖对象的创建工作:假设一个游戏开场景:我们需要构造道路、房屋、地道,从林...等等对象工厂方法如下:
?1?????class?RoadFactory?2?????{?3?????????public?static?Road?CreateRoad()?4?????????{?5?????????????return?new?Road();?6?????????}?7?????????public?static?Building?CreateBuilding()?8?????????{?9?????????????return?new?Building();10?????????}11?????????public?static?Tunnel?CreateTunnel()12?????????{13?????????????return?new?Tunnel();14?????????}15?????????public?static?Jungle?CreateJungle()16?????????{17?????????????return?new?Jungle();18?????????}19?????}
调用方式如下:
1?????????Road?road?=? RoadFactory.CreateRoad();3?????????Building?building?=?RoadFactory.CreateBuilding();4?????????Tunnel?tunnel?=?RoadFactory.CreateTunnel();5?????????Jungle?jungle?=?RoadFactory.CreateJungle();
如上可见简单工厂的问题:??? 不能应对不同系列对象的变化。比如有不同风格的场景---对应不同风格的道路,房屋、地道....如何解决:??? 使用面向对象的技术来封装变化点。动机(Motivate):??? 在软件系统中,经常面临着一系统相互依赖的对象的创建工作:同时,由于需求的变化,往往存在更多系列对象的创建工作。??? 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种封装机制来避免客户程序和这种多系列具体对象创建工作的紧耦合?意图(Intent):??? 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。???????????????????????????????????????????? ??? ----《设计模式》GOF结构图(Struct):??????????? 适用性:??? 1.一个系统要独立于它的产品的创建、组合和表示时。??? 2.一个系统要由多个产品系统中的一个来配置时。??? 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。??? 4.当你提供一个产品类库,而只想显示它们的接口不是实现时。生活例子:?????????????? 结构图代码实现:
1??abstract?class?AbstractFactory2?????{3????????public?abstract?AbstractProductA?CreateProductA();4????????public?abstract?AbstractProductB?CreateProductB();5?????}
1???abstract?class?AbstractProductA2?????{3????
您可能关注的文档
- 9月25日修改陈书华新稿黄帝内经论文920.doc
- A60ROM刷机定制教程.doc
- A09补充材料从“产品需求”(PRD)到“产品设计”(PDD).docx
- A62如何有效授权课件.doc
- A10施工单位安监人员工程管理人员复习题.doc
- 9层消防材料库掘进作业规程.doc
- AA机械与动力工程学院本科生毕业论文规范.doc
- ABB开关电气常见技术问题及答案(32页).doc
- AA+父母代种母鸡体重标准和饲喂程序顺季1.doc
- ABAQUS系列讲座之一多晶材料微观组织结构的模型导入.doc
- GB/T 26949.3-2025工业车辆 稳定性验证 第3部分:前移式和插腿式叉车.pdf
- 中国国家标准 GB/T 26949.3-2025工业车辆 稳定性验证 第3部分:前移式和插腿式叉车.pdf
- 计量规程规范 JJF 2272-2025桥隧结构监测系统在线校准方法.pdf
- 《JJF 2272-2025桥隧结构监测系统在线校准方法》.pdf
- JJF 2272-2025桥隧结构监测系统在线校准方法.pdf
- JJF 2270-2025车载式道路交通标线逆反射测量仪校准规范.pdf
- 《JJF 2270-2025车载式道路交通标线逆反射测量仪校准规范》.pdf
- 计量规程规范 JJF 2270-2025车载式道路交通标线逆反射测量仪校准规范.pdf
- JJF 2261-2025生物安全采样舱性能参数校准规范.pdf
- 计量规程规范 JJF 2261-2025生物安全采样舱性能参数校准规范.pdf
最近下载
- 2024年软件资格考试多媒体应用设计师(中级)(基础知识、应用技术)合卷试题及解答参考.docx VIP
- 老年急危重症容量管理急诊专家共识(2024).pptx VIP
- 软件资格考试多媒体应用设计师(中级)(基础知识、应用技术)合卷试题及解答参考.docx VIP
- 软件资格考试多媒体应用设计师(基础知识、应用技术)合卷(中级)试题与参考答案(2025年).docx VIP
- 2025年软件资格考试多媒体应用设计师(中级)(基础知识、应用技术)合卷试题及解答参考.docx VIP
- 多媒体应用设计师(基础知识、应用技术)合卷软件资格考试(中级)试题与参考答案(2025年).docx VIP
- 软件资格考试多媒体应用设计师(基础知识、应用技术)合卷(中级)试题与参考答案(2025年).pdf VIP
- 软件资格考试多媒体应用设计师(基础知识、应用技术)合卷(中级)试题与参考答案(2025年).docx VIP
- 刘渡舟医案经方临证指南(完整资料)优选.pdf VIP
- 刘渡舟医案).doc VIP
文档评论(0)