我们一起看元素模式

前言:
 
     第一次参加图书试读的活动,看了几遍《元素模式》的试读章节,决定把本文写成一篇导读的文章,方便感兴趣的朋友一起研读。
 
引言
 
     看到书名,首先我们会问,这是一本什么书?
     这是一本介绍设计模式的书。
     那么紧接着会好奇,我们听过单例模式,装饰模式,工厂模式。那么元素模式是什么模式?
 
概念:
 
     元素模式Elemental DesignPattern,简称EDP,是一组基础的程序设计思想,核心要义是一组面向对象的基本概念。
 
     我去,说了比没说还让人费解。更不能来点通俗易懂的说明?

     其实套用译者的比喻(参加译者序)就能很恰当地理解它——结合我们以前了解的设计模式(《Design Patterns》中的23种经典设计模式,本书简称为GoF)来说,GoF就相当于硫酸、食盐、葡萄糖等化合物,他们在特定的场景中会有特定的功能。而本文中的EDP指的是比GoF颗粒度更细致的氢、氧、硫、碳等化学元素。

     再简单的说,EDP就是比GoP更简洁的一些设计模式的总称,文中给出了16中之多。

     这16个模式是怎么来的呢?他们有什么特殊的关联吗?

           按照作者的话来说:元素模式是建立在设计空间的基础上的。设计空间的思个维度是对象、字段、方法、类型,他们按照状态划分真若干可区分的区间,形成一个超空间的坐标系。这个坐标系的二维和三维投影当然是可视化的,在二维或三维空间中,形成若干个相邻的方块。每个方块都有着明确的实际空间定位,代表着一种特定的元素。
 
     对,就是将对象、方法、字段、类型建立成一个四维坐标系,形成2^4=16个独立的空间,每个空间代表一个元素模式。
 
     我们来简单看看下面的图标。


 
          为了便于大家理解,作者先将对象和方法画成一个二维坐标。引出4个经典EDP概念。坐标上有相似和不相识两段,为了方便理解,我们可以先简单粗暴的把它们理解为“相同”和“不相同”。
 
[1]   递归:同一个对象调用同一个方法,即递归,这是大家熟知的。
[2]   委托:一个对象的一个方法调用另一个对象的另一个方法,即委托。
[3]   重定向:不同对象调用用一个方法,这就是重定向。
[4] 聚集:同一个对象中不同的方法,即为聚集。
 
          看起来好像很厉害的样子。但是他们的意义何在?我们该在什么场景中使用它们?它们的好处是什么?还会有哪些相似的概念?
 
          门捷列夫在刚发明元素周期表时也一度被人质疑或取笑,而元素周期表的发现对整个化学界的影响不言而喻。那么,我们现在所研究元素模式是否有如此深远的意义呢?我期待下文给我答复,另外也希望能解开上面提及的一连串疑问。
 
 
 
 
 

猜你喜欢

转载自qlit.iteye.com/blog/2107359