1.什么是设计模式
设计模式是从许多优秀的软件系统中总结出成功的可复用的设计方案。建筑大师Alexander给出过一个经典定义:"每一个设计模式描述一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心,这样,你就能一次次地使用该方案而不必做重复的劳动。"。
记录一个设计模式有4个基本要素:
1、名称:
一个模式的名称,高度概括了该模式的本质,有利于行业统一术语,便于交流。
2、问题:
描述应该在何时使用该模式,解释设计问题和问题存在的前因后果,描述在怎样的场景下使用该模式。
3、方案:
描述方案的组成部分,它们之间的相互关系,以及各自的职责和协作方式。
4、效果:
描述模式的应用效果以及使用模式应该权衡的问题,主要效果包括使用模式对系统的灵活性,扩展性和复用性的影响。
所以,掌握一个设计模式,最基本是要能清晰描述一个设计模式的4个基本要素。
2.“23个设计模式”来源:
来源于外国4人在1994年合作出版的《Design Patterns: Elements of Reusable Obvject-Orientied Software 》,翻译为:“设计模式:可复用的面向对象软件的基本原理”。也就是大名鼎鼎的四人帮之书,昵称GOF。
3.学习设计模式的重要性:
易维护、易扩展、易复用,是一个好的设计系统的特点。而23种设计模式就是从很多好的设计系统中提取出来的部分模式,学习这些设计模式,不仅可以使我们用好这些成功的模式,更重要是能让我们更加深刻地理解面向对象的设计思想,非常有利于我们更好的使用面向对象的思想来解决我们设计中的问题。 另外,学习了设计模式,对我们进一步学习、理解和掌握框架是非常有利的,比如JavaEE中就大量使用了设计模式。
4.合理使用模式
不是任何部分都要套用模式,模式是针对具体问题的。
避免教条:不满足时,完全可以修改模式种的部分结构来符合实际设计需求。
避免乱用:模式不是发现的,是总结出来的,在设计时,要尽可能用最简单的方式满足系统要求,不要为了模式而强行使用。
5.23中设计模式
创建型5种(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
结构型7种()
行为型11中()