文章目录
题外话
水有多深,只有自己试试才知道,提前试水要比不小心掉到水里好一万倍
对同一种思想,从不同的角度看待会得到不同的结论,而本质上是一样的
对待陌生的事物,理解全貌的过程是一个缓慢渐进的过程,自有模型与实际模型基本匹配的速度就是掌握新事物的速度,这个过程是客观的
感性的认知可能带来灵感,但其本质是一种不确定的东西,不是天然可靠的
记录灵感很重要,就像思考思考本身
和思考具体内容
一样重要
设计模式——就在我们身边
人类的知识来源于生活经验的归纳、总结、概括和提升,设计模式也是如此。编程人员用代码实现符合需求的功能有着多种多样的方式,有些方式既简便又实用,不仅仅满足现在的需求,也为将来需求的变化留下了改进的余地,人们将这些方式总结出来,归纳为经典的模式,在构建新的软件工程,或者改造已有的软件工程的时候可以参考总结好的模型进行设计——设计模式来源于实践而又指导实践。
设计模式
设计模式针对面向对象系统中重复出现的设计问题,提出一个通用的设计方案,并予以系统化的命名和动机解释。它描述了问题、解决方案、在什么条件下使用该解决方案及其效果。它还给出了实现的要点和实例。该解决方案是解决该问题的一组精心安排的通用的类和对象,再经过订制和实现就可用来解决特定上下文中的问题。
设计模式的种类——不仅仅有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 Method | Adapter | Interpreter 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(享元) |
|创造型模式 | [生成器/建造者模式 |
操作型模式 | Template Method(模版方法)、State(状态)、Strategy(策略)、Command(命令)、Interpreter(解释器) |
扩展型模式 | Decorator(装饰器)、Iterator(迭代器)、Visitor(访问者) |
参考资料
《Design Patterns》(2000)
《Design Patterns In Java》 (???)