一、 什么是设计模式
设计模式最早并不是出现在软件设计领域,而是在建筑领域,后被人发现并应用于软件设计领域,即软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
二、 设计模式的诞生于发展
2.1 软件设计模式的诞生
肯特·贝克和沃德·坎宁安在1987年利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口的生成中。一年后Erich Gamma在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。于此同时James Coplien 在1989年至1991 年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Idioms。就在这一年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides合作出版了Design Patterns - Elements of Reusable Object-Oriented Software 一书,在此书中共收录了23个设计模式。这四位作者在软件开发领域里也以他们的匿名著称Gang of Four(四人帮,简称GoF),并且是他们在此书中的协作导致了软件设计模式的突破。有时这个匿名GoF也会用于指代前面提到的那本书。
2.2软件设计模式的发展
1987年,Kent Beck和Ward Cunning借鉴Alexander的模式思想在程序开发中开始应用一些模式,在OOPSLA会议上发表了他们的成果。
1990年,OOPSLA与ECOOP联合举办,Erich Gamma和Richard Helm等人开始讨论有关模式的话题,“四人组正式成立”。
1991年,OOPSLA, Anderson再度主持研讨会,模式已经逐渐成为人们讨论的话题。
1993年,Kent Beck和Grady Booch赞助了第一次关于设计模式的会议,这个设计模式研究发展成为著名的Hillside Group研究组。
1994年,由Hillside Group发起,在美国伊利诺伊州的Allerton Park召开了第一届关于面向对象模式的世界性会议。
1995年,”四人组”出版了《设计模式:可复用面向对象软件的基础》一书。
1995—今天,设计模式在软件开发中得到广泛应用。
三、 设计模式分类
1.根据目的分类
(1)创建型 主要用于创建对象。 有工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)5种;
(2)结构型 主要用于处理类和对象的组合。 有适配器模(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)7种;
(3)行为型 主要用于描述类或对象怎么样交互和怎样分配职责。有 指责链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略模式(Stratege)、模板方法模式(Template Method)、访问者模式(Visitor) 11种。
2.根绝范围分类
可分为类模式和对象模式
(1)类模式用于处理类和子类的关系,这种关系通过继承建立,在编译时就确定了,是一种静态关系。
(2)对象模式处理对象间的关系,具有动态关系。
类模式有 工厂方法模式、 适配器模式、解释器模式、模板方法模式,其余是对象模式
四、 软件设计模式的作用
(1) 设计模式以一种标准的方式供广大开发人员使用,为开发者的沟通提供了一套机制,帮助开发者更好地明白和更清晰地描述一段被给出的代码。
(2) 设计模式可以使人们更加方便简单复用成功的设计模式和结构。
(3) 设计模式可以使人们深入理解面向对象的设计思想,提高软件的开发效率,节约设计成本。
五、参考链接
https://www.cnblogs.com/jyqdaisy/p/12460911.html
https://blog.csdn.net/pannubi/article/details/82590053
原文链接: https://www.cnblogs.com/lyt96/p/12463280.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/372602
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!