(一)设计模式·开卷有益

题外话

水有多深,只有自己试试才知道,提前试水要比不小心掉到水里好一万倍
对同一种思想,从不同的角度看待会得到不同的结论,而本质上是一样的
对待陌生的事物,理解全貌的过程是一个缓慢渐进的过程,自有模型与实际模型基本匹配的速度就是掌握新事物的速度,这个过程是客观的
感性的认知可能带来灵感,但其本质是一种不确定的东西,不是天然可靠的
记录灵感很重要,就像思考思考本身和思考具体内容一样重要

设计模式——就在我们身边

人类的知识来源于生活经验的归纳、总结、概括和提升,设计模式也是如此。编程人员用代码实现符合需求的功能有着多种多样的方式,有些方式既简便又实用,不仅仅满足现在的需求,也为将来需求的变化留下了改进的余地,人们将这些方式总结出来,归纳为经典的模式,在构建新的软件工程,或者改造已有的软件工程的时候可以参考总结好的模型进行设计——设计模式来源于实践而又指导实践。

设计模式

设计模式针对面向对象系统中重复出现的设计问题,提出一个通用的设计方案,并予以系统化的命名和动机解释。它描述了问题、解决方案、在什么条件下使用该解决方案及其效果。它还给出了实现的要点和实例。该解决方案是解决该问题的一组精心安排的通用的类和对象,再经过订制和实现就可用来解决特定上下文中的问题。

设计模式的种类——不仅仅有23种

已知的涉及模式至少有 100 种,市面上经典的场景有23种。

《Design Patterns》和《Design Patterns In Java Ⅱ》 的比较

如果你有阅读过这两本书,你会发现,第一本书要早于第二本书,而且第二本书的作者借鉴了第一本书,此外,第一本书是以C++和Smalltalk 的角度来写的,而第二本书是针对 Java 语言来写的。第一本书理论性很强,有具体的例子;第二本书很多个小例子,还有引导思考的小问题,相比更生动一些。
两本书都介绍了23种经典设计模式,不同之处在于二者的分类不同,笔者会将二者对分类都罗列出来,但是对于同一种模式,只用一篇文章进行表述。

设计模式最终体现在哪一层次?

设计模式最终体现在类级别的层次或者对象级别的层次,类似于 UML 图,同一种形式类由于在现实世界中的含义不同,在 UML 中体现的形式也是不同的,多种设计模式是可以同时存在的。如果你还不掌握 UML 的基本知识(了解UML),千万不要心急的开始学习设计模式,磨刀不误砍柴工,设计模式总是先将设计思想体现在 UML 图形上。

类模式和对象模式

以下内容摘自《Design Patterns》:
“类模式处理对象间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。从某种意义上来说,几乎所有的模式都属于对象模式的范畴。”

《Design Patterns》对23种经典设计模式的分类

《Design Patterns》从目的和粒度两个维度对23种经典设计模式进行了分类。
目的有三种:创建型(Creational)、结构型( Structural )、行为型( Behavioral )
粒度有两种:类或者对象

分类创建型构造型行为型
Factory MethodAdapterInterpreter
Template Method
对象Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor
《Design Patterns In Java Ⅱ》对23种经典设计模式的分类

《Design Patterns In Java Ⅱ》 根据意图对 23 种设计模式进行分类

意图模式
接口型模式Adapter(适配器)Facade(外观)Composite(合成)Bridge(桥接)
职责型模式Singleton(单例)、Observer(观察者)、Mediator(调停者/中介者)、Proxy(代理)、Chain of Responsibility(职责链)、Flyweight(享元)
构造型模式Builder(构建者)、Factory Method(工厂方法)、Abstract Factory(抽象工厂)、Prototype(原型)、Memento(备忘录)
操作型模式Template Method(模版方法)State(状态)、Strategy(策略)、Command(命令)、Interpreter(解释器)
扩展型模式Decorator(装饰器)、Iterator(迭代器)、Visitor(访问者)
参考资料

《Design Patterns》(2000)
《Design Patterns In Java》 (???)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页