设计模式

前言

这里会简单的介绍一下设计模式的存在意义和历史发展,这样会有一个联想记忆,可能理解会更深刻一些,让自己会思索更深层次的内容,而不是简单背诵一些简单的原则或者原理。这里笔者推荐《设计模式之蝉》 这本书来学习设计模式面向对象编程

设计模式意义

在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。(维基百科)能够高效重复的利用已有的资源而不重复的造轮子。

设计模式历史

建筑师克里斯托佛·亚历山大在1977/79年编制了一本汇集设计模式的书,但是这种设计模式的思想在建筑设计领域里的影响远没有后来在软件开发领域里传播的广泛。

肯特·贝克和沃德·坎宁安在1987年,利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口(GUI)的生成中。一年后埃里希·伽玛在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。与此同时James Coplien 在1989年至1991年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Programming Styles and Idioms。同年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides 合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns - Elements of Reusable Object-Oriented Software) 一书,在此书中共收录了23个设计模式。

这四位作者在软件开发领域里以“四人帮”(英语,Gang of Four,简称GoF)而闻名,并且他们在此书中的协作导致了软件设计模式的突破。有时,GoF也会用于代指《设计模式》这本书。[维基百科]

设计模式六大原则

这里依然是从结构入手,这样大脑有一个大体的认识和印象。

上图结构主要两大块:

1.单一接口,类,方法的设计(单一原则接口分离原则)

2.类与类之间关系的设计(里氏替换,依赖倒置,迪米特)

3.设计之初考虑的原则(开闭原则)

设计模式演变

笔者认真的过了一遍演变的23种设计模式,都是适用于一定的特殊场景。阅读过程中认真的验证了一下这23种模式,都是遵守上述设计模式的六大原则,所以笔者推荐的是认真领悟设计模式的六大原则,在实际生产中,自己怎么使用舒服同时也能满足项目的需求,那就怎么用。因为最终的需求还是满足项目的需求,完成项目。如果非要推荐,个人推荐工厂模式,观察者模式,桥接模式,原型模式