前言:
第一次参加图书试读的活动,看了几遍《元素模式》的试读章节,决定把本文写成一篇导读的文章,方便感兴趣的朋友一起研读。
引言:
这是一本介绍设计模式的书。
那么紧接着会好奇,我们听过单例模式,装饰模式,工厂模式。那么元素模式是什么模式?
概念:
元素模式(Elemental DesignPattern,简称EDP),是一组基础的程序设计思想,核心要义是一组面向对象的基本概念。
我去,说了比没说还让人费解。更不能来点通俗易懂的说明?
其实套用译者的比喻(参加译者序)就能很恰当地理解它——结合我们以前了解的设计模式(《Design Patterns》中的23种经典设计模式,本书简称为GoF)来说,GoF就相当于硫酸、食盐、葡萄糖等化合物,他们在特定的场景中会有特定的功能。而本文中的EDP指的是比GoF颗粒度更细致的氢、氧、硫、碳等化学元素。
再简单的说,EDP就是比GoP更简洁的一些设计模式的总称,文中给出了16中之多。
这16个模式是怎么来的呢?他们有什么特殊的关联吗?
其实套用译者的比喻(参加译者序)就能很恰当地理解它——结合我们以前了解的设计模式(《Design Patterns》中的23种经典设计模式,本书简称为GoF)来说,GoF就相当于硫酸、食盐、葡萄糖等化合物,他们在特定的场景中会有特定的功能。而本文中的EDP指的是比GoF颗粒度更细致的氢、氧、硫、碳等化学元素。
再简单的说,EDP就是比GoP更简洁的一些设计模式的总称,文中给出了16中之多。
这16个模式是怎么来的呢?他们有什么特殊的关联吗?
按照作者的话来说:元素模式是建立在设计空间的基础上的。设计空间的思个维度是对象、字段、方法、类型,他们按照状态划分真若干可区分的区间,形成一个超空间的坐标系。这个坐标系的二维和三维投影当然是可视化的,在二维或三维空间中,形成若干个相邻的方块。每个方块都有着明确的实际空间定位,代表着一种特定的元素。
对,就是将对象、方法、字段、类型建立成一个四维坐标系,形成2^4=16个独立的空间,每个空间代表一个元素模式。
我们来简单看看下面的图标。
为了便于大家理解,作者先将对象和方法画成一个二维坐标。引出4个经典EDP概念。坐标上有相似和不相识两段,为了方便理解,我们可以先简单粗暴的把它们理解为“相同”和“不相同”。
[1] 递归:同一个对象调用同一个方法,即递归,这是大家熟知的。
[2] 委托:一个对象的一个方法调用另一个对象的另一个方法,即委托。
[3] 重定向:不同对象调用用一个方法,这就是重定向。
[4] 聚集:同一个对象中不同的方法,即为聚集。
看起来好像很厉害的样子。但是他们的意义何在?我们该在什么场景中使用它们?它们的好处是什么?还会有哪些相似的概念?
门捷列夫在刚发明元素周期表时也一度被人质疑或取笑,而元素周期表的发现对整个化学界的影响不言而喻。那么,我们现在所研究元素模式是否有如此深远的意义呢?我期待下文给我答复,另外也希望能解开上面提及的一连串疑问。
相关推荐
3. **迭代器模式**:迭代器模式是行为型设计模式,它允许我们遍历集合对象的元素而无需暴露其底层表示。迭代器模式提供了一种方法顺序访问聚合对象中的元素,而无需暴露其底层结构。在Java中,迭代器模式广泛应用于...
CSS基础-选择器进阶+背景属性+元素显示模式+三大特性 CSS基础选择器进阶: 在CSS中,选择器是用于选择HTML元素并应用样式的核心机制。选择器进阶是指在基础选择器的基础上,进一步学习和应用选择器的高级规则和...
6. **职责链模式**:避免将请求的发送者和接收者耦合在一起,使得多个对象都有机会处理这个请求,将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理为止。 7. **备忘录模式**:在不破坏封装性的前提下,...
从给定的文件信息来看,该文档主要涵盖了GoF(Gang of Four)提出的23种设计模式的详细解析,并附带了C++语言的实现源码。设计模式是在软件工程领域内,针对常见问题的一套经过验证的解决方案,它们为解决特定类型的...
此外,这两种模式也可以和其他模式一起使用,如工厂模式可以用于创建策略对象,装饰器模式可以用来动态地增加或修改策略的职责。 总之,理解并熟练掌握设计模式对于提升Java程序员的编程能力和代码质量至关重要。...
这些模式是经验丰富的开发者们在解决相似问题时积累的智慧结晶,通过标准化的解决方案,它们可以帮助我们写出更可维护、可扩展和可复用的代码。在Java编程语言中,设计模式的应用尤为广泛,因为它们能够提升代码的...
- 适配器模式:使两个接口不兼容的类可以一起工作。 - 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式:允许你将对象组合成树形结构来表示“部分-整体”的层次结构。 - 装饰模式:动态地...
通过深入理解这些设计模式,我们可以更好地进行面向对象的分析与设计(OOA/D),提高代码的质量和系统的可维护性。 #### 0.1 设计模式解析(总序) 设计模式不仅仅是一系列具体的解决方案,更是一种思维方式。它们...
职责链模式避免将请求的发送者和接收者耦合在一起,而是将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止;访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的...
8. 适配器模式:将一个类的接口转换成客户希望的另一个接口,使原本接口不兼容的类可以一起工作。 9. 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。 10. 外观模式:提供一个统一的接口,用来访问子...
- **状态模式**:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 - **策略模式**:定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用...
- Adapter模式:将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - Decorator模式:动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式比...
6. **适配器模式**:将一个类的接口转换成客户期望的另一个接口,使得原本因接口不兼容而不能一起工作的那些类能够一起工作。 7. **桥接模式**:将抽象部分与实现部分分离,使它们可以独立变化,降低了抽象和实现...
首先,我们要理解设计模式的基本概念。设计模式并非具体的代码或库,而是一种通用解决方案的模板,适用于在特定的软件设计问题上。它们是在不同环境下经过实践证明有效的方法,可以在多种项目中重复使用。 在Java中...
首先,我们来了解一些基本的设计模式类型。在.NET中,主要分为三大类:创建型模式、结构型模式和行为型模式。 1. **创建型模式**: - 单例模式(Singleton):保证一个类只有一个实例,并提供全局访问点。 - 工厂...
在实际开发中,我们经常结合其他设计模式一起使用迭代器,例如工厂模式用于创建迭代器,装饰器模式用于在运行时添加新的遍历行为等。理解并熟练运用迭代器模式对于提升代码质量和可维护性具有重要意义。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - **适用场景**:想使用一个已经存在的类,而它的接口不符合需求;想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即...
在Java设计模式中,我们可以分为三大类:创建型、结构型和行为型模式。每种类型的模式都有其特定的用途和适用场景。 1. **创建型模式**: - 单例模式:确保一个类只有一个实例,并提供一个全局访问点。 - 工厂...