- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式;一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式使代码编制真正工程化
设计模式是软件工程的基石脉络,如同大厦的结构一样
并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案
能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力;设计模式的由来;建筑师克里斯托佛·亚历山大在1977-79年编制了一本汇集设计模式的书。
肯特·贝克和沃德·坎宁安在1987年,利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口的生成中
1988年,Erich Gamma在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发
与此同时James Coplien在1989年至1991 年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Idioms。;1995年,Richard Helm, Ralph Johnson, John Vlissides (Gof,四人帮)合作出版了Design Patterns - Elements of Reusable Object-Oriented Software ?一书,在此书中共收录了23个设计模式;创建范例创建范例全部是关于如何创建实例的。这组范例可以被划分为两组:类创建范例及对象创建范例。类创建实例在实例化过程中有效的使用类之间的继承关系,对象创建范例则使用代理来完成其任务。
抽象工厂(Abstact Factory)
构造器(Builder Pattern)
工厂方法(Factory Method pattern)
原型(Prototype pattern)
单例模式(Singleton pattern)
;结构范例这组范例都是关于类及对象复合关系的。
适配器(Adapter pattern)
桥接(Bridge pattern)
组合(Composite pattern)
装饰(Decorator pattern)
外观(Fa?ade pattern)
享元(Flyweight pattern)
代理(Proxy pattern);行为范例这组范例都是关于对象之间如何通讯的。
职责链(Chain-of-responsibility pattern)
命令(Command pattern)
翻译器(Interpreter pattern)
迭代器(Iterator pattern)
仲裁器(Mediator pattern)
回忆(Memento pattern)
观察者(Observer pattern)
状态机(State pattern)
策略(Strategy pattern)
模板方法(Template method pattern)
参观者(Visitor);表述一个软件设计模式的格式根据作者的不同,划分和名称等都会有所不同。常用的GoF描述模式的格式大致分为以下这些部分:
模式名:每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。
问题:在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。
解决方案:上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协作方式。
别名:一个模式可以有超过一个以上的名称。这些名称应该要在这一节注明。
动机:该模式应该利用在哪种情况下是本节提供的方案(包括问题与来龙去脉)的责任。
;适用性:模式适用于哪些情况、模式的背景等等。
结构:这部分常用类图与交互图阐述此模式。
参与者:这部分提供一份本模式用到的类与对象清单,与它们在设计下扮演的角色。
合作:描述在此模式下,类与对象间的交互。
影响:采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。这部分应描述使用本模式后的结果、副作用、与权衡(trade-off)
实现:这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。
示例:简略描绘出如何以编程语言来使用模式。
已知应用:业界已知的实现示例。
相关模式:这部分包括其他相关模式,以及与其他类似模式的不同。
;如何学习设计模式;在面向对象的范畴中讨论设计模式
面向对象是一种思想、方法和风格
面向对象是一种编程范式(Programming paradigm)
编程范式是一类典型的编程风格,是指从事软件工程的一类典型的风格,如:函数式编程、程序编程、面向对象编程、指令式编程等等为不同的编程范型。
编程范型提供了(同时决定了)程序员对
文档评论(0)