设计模式(design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
软件领域的设计模式起源于建筑学。
1977年,建筑大师alexander出版了《a pattern language:towns, building,
construction》一书。受alexander著作的影响 ,kent beck和ward
cunningham在1987年举行的一次面向对象的会议上发表了论文:《在面向对象编程中使用模式》。

1.创建型模式
社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使
用分开也就成为了必然趋势。对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里
有5个具体的创建型模式可供研究,它们分别是:
工厂方法模式(factory method)
抽象工厂模式(abstract factory)
创建者模式(builder)
原型模式(prototype)
单例模式(singleton)
2.结构型模式
在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,如何设计对象的结构、继承和依赖关系会影响到后续程序的
维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:
外观模式(facade)
适配器模式(adapter)
代理模式(proxy)
装饰模式(decorator)
桥模式(bridge)
组合模式(composite)
享元模式(flyweight)
3.行为型模式
在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高,这里有11个具体的行为型模式可供研究,它们分别是:
模板方法模式(template method)
观察者模式(observer)
状态模式(state)
策略模式(strategy)
职责链模式(chain of responsibility)
命令模式(command)
访问者模式(visitor)
调停者模式(mediator)
备忘录模式(memento)
迭代器模式(iterator)
解释器模式(interpreter)
目前,被公认在设计模式领域最具影响力的著作是erich gamma、richard helm、ralph johnson和john
vlissides在1994年合作出版的著作:《design patterns:elements of reusable
object-oriented software》(中译本《设计模式:可复用的面向对象软件的基本原理》
或《设计模式》),该书被广大喜爱者昵称为gof(gang of
four)之书,被认为是学习设计模式的必读著作,gof之书已经被公认为是设计模式领域的奠基之作。
1.面向抽象原则
设计一个类时,不让该类面向具体的类,而是面向抽象类或接口 。
举个例子:定义底面为三角形的柱体
2.开-闭原则
设计应当对扩展开放,对修改关闭。
如果您的设计遵守了“开-闭原则”,那么这个设计一定是易维护的,因为在设计中增加新的模块时,不必去修改设计中的核心模块。
3.高内聚-低耦合原则
如果类中的方法是一组相关的行为,则称该类是高内聚的,反之称为低内聚的。
所谓低耦合就是尽量不要让一个类含有太多的其它类的实例的引用,以避免修改系统的其中一部分会影响到其它部分。
学习设计模式不仅可以使我们使用好这些成功的模式,更重要的是可以使我们更加深刻地理解面向对象的设计思想,非常有利于我们更好地使用面向对象语言解决设计中的问题。
合理使用模式
1.正确使用; 2.避免教条; 3.模式挖掘