对于现在的软件领域,设计模式基本上是GoF影响深远的Design Patterns这书的代名词,在看到说元素模式(EDP)是一类全新的设计模式时,非常好奇的去试读了两章,受益匪浅。
EDP来源于研究性项目SPQR(模式查询与识别系统),立足于程序设计理论的研究,用于从现存的源代码的程序体中识别出已知的设计模式,在这个研究过程中,发现了EDP这一兼具实践性和实用性的广泛蕴涵的设计模式。因此对于具有一定开发经验的开发人员来说,深刻理解EDP及其背后的思想能够大大提升抽象能力和程序设计理论水平。
通常来说,设计模式是高度抽象的,是经过不断的实践、总结、抽象并被实践证明的有效的程序设计方法;它不能太刚性,从单纯的实现来探讨设计模式,生命力会大打折扣;而EDP就是用来构建根本性基础的设计模式。
EDP的研究来源于SPQR,关注点却是大家“显而易见”的东西;显而易见指的是“正确性”,而这个“正确性”是完全取决于语境、经验和所学的。和DDD中的限界上下文,编程语言中的作用域一样,语境非常关键,一方面指出了发挥设计模式的最佳位置,另一方面,也指出了限制范围,只有在语境中的那一亩三分地中才是OK的;这与设计模式是特定语境下的常见问题的常见解决方案这一宗旨是非常吻合的。
EDP的研究方法是将现有模式进行分解,从中得到关心的模式;在研究过程中,将关注点聚焦到作用域关系,这样可以调整审视某个特定设计元素的视角。
在具体研究中,从作用域的对象、方法、字段和类型这四种的交互关系,找出我们感兴趣的几种关系,最终聚焦到方法调用、字段读取、状态改变及内聚,在第二章中对方法调用进行分析:将方法调用进行抽象,可以得到以下四个部分:发起调用的方法、被调用的方法以及它们分别位居的对象;然后从相似度角度,可以发现三种关系:
- 闭合对象之间的相似度;
- 闭合对象的类型之间的相似度;
- 发起调用的方法和被调用的方法之间的相似度;
从这三个关系扩展为一个三维模型,就能引申出我们现有程序设计中的各种理论关系;
举例来说,
- 如果两个对象相似,两个方法也相似,则调用关系非常有可能就是递归;
- 而如果对象不相似但方法相似,则调用关系非常有可能就是重定向;
- ...
扩展到三维空间,将方法相似度取为相似,则
- 如果对象类型相似,对象也相似,这时就是递归;
- 如果对象相似,对象类型是子类型,则关系就是扩展方法;
- ...
这样将面向对象之间的关系与程序理论结合,很容易去理解程序设计理论,提升开发人员的抽象思维能力;
还有个有意思的地方就是,这个三维抽象空间里面还存在着不少地方是“盲区”,目前没有一种普遍接受的程序概念与之对应,这与元素周期表的思维很接近,顺着这种思维方式,我们的抽象与演化能力会不会大增呢?
相关推荐
想知道为什么《Elemental Design Patterns》的书名被翻译成了“元素模式”吗?想知道这本书与《设计模式》这本书的关系是什么吗?如果你的回答是肯定的,那么不妨就从现在开始阅读这本元素模式吧!这是一本内容极具...
想知道为什么《Elemental Design Patterns》的书名被翻译成了“元素模式”吗?想知道这本书与《设计模式》这本书的关系是什么吗?如果你的回答是肯定的,那么不妨就从现在开始阅读这本元素模式吧!这是一本内容极具...
本书介绍了一类全新的设计模式,称为元素模式(Elemental Design Pattern),其为软件工程设计模式的研究和应用打下了基础。元素模式深深植根于软件程序设计理论的研究,但其目的却在于实践性和实用性。从程序设计的...
REE 元素配分模式图的绘制
ISO_IEC TR 23613《信息技术 云计算 云服务计量元素与计费模式》正式发布.pdf
涉及设计模式的资料已经很多了,各种模式已经有上千种,虽然通常用到的不多,但是如何熟练地在不同场合使用不同模式,依然是有相当难度,各类社区致力于总结经验并指导大家学习,可在很多时候...这也是元素模式的根本
2.css的元素显示模式 html元素一般分为块元素和行内元素 (1)块级元素 div p h1-h6 ul ol li ①独占一行 ②宽度 高度 外边距 内边距都可控制 ③宽度默认是容器(父级元素)100%的宽度 ④是一个容器及盒子 里面...
CSS基础-选择器进阶+背景属性+元素显示模式+三大特性
用户体验元素.pptx
巧用音乐元素,体验美妙旋律
大型商业项目如何体现体验元素.pdf大型商业项目如何体现体验元素.pdf大型商业项目如何体现体验元素.pdf大型商业项目如何体现体验元素.pdf大型商业项目如何体现体验元素.pdf大型商业项目如何体现体验元素.pdf大型商业...
大型商业项目如何体现体验元素.docx大型商业项目如何体现体验元素.docx大型商业项目如何体现体验元素.docx大型商业项目如何体现体验元素.docx大型商业项目如何体现体验元素.docx大型商业项目如何体现体验元素.docx...
初中语文“三习四元素”教学模式.doc
渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组某个元素渲染数组...
本文基于用户体验元素的理论,从五个层次分析了用户体验元素交互设计中的要点和关系。 以丹霞山风景区为例,根据用户体验元素理论完成了景区三通互动平台的分析与设计,并论证了该方法的可行性。
本书是第一本专门用于系统描述线性和平面相控阵天线中扇形和轮廓元素模式的理论和方法的专著。 本书由六章组成,主要基于作者所获得的结果,将它们与其他专家获得的结果进行比较。
点击子元素,触发子元素事件的同时不触发父元素的时间
设计模式 java 迭代器模式
访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。...
元素的性质随着元素原子序数(即核电荷数或核内质子数)的递增而呈周期性的变化,或元素的性质是原子序数的周期函数,这一规律叫做元素周期律。从18世纪中叶到19世纪中叶这100年间,随着生产和科学技术的发展,新的...