元素模式初体验

 

       对于现在的软件领域,设计模式基本上是GoF影响深远的Design Patterns这书的代名词,在看到说元素模式(EDP)是一类全新的设计模式时,非常好奇的去试读了两章,受益匪浅。

 

       EDP来源于研究性项目SPQR(模式查询与识别系统),立足于程序设计理论的研究,用于从现存的源代码的程序体中识别出已知的设计模式,在这个研究过程中,发现了EDP这一兼具实践性和实用性的广泛蕴涵的设计模式。因此对于具有一定开发经验的开发人员来说,深刻理解EDP及其背后的思想能够大大提升抽象能力和程序设计理论水平。

 

       通常来说,设计模式是高度抽象的,是经过不断的实践、总结、抽象并被实践证明的有效的程序设计方法;它不能太刚性,从单纯的实现来探讨设计模式,生命力会大打折扣;而EDP就是用来构建根本性基础的设计模式。

 

        EDP的研究来源于SPQR,关注点却是大家“显而易见”的东西;显而易见指的是“正确性”,而这个“正确性”是完全取决于语境、经验和所学的。和DDD中的限界上下文,编程语言中的作用域一样,语境非常关键,一方面指出了发挥设计模式的最佳位置,另一方面,也指出了限制范围,只有在语境中的那一亩三分地中才是OK的;这与设计模式是特定语境下的常见问题的常见解决方案这一宗旨是非常吻合的。

 

        EDP的研究方法是将现有模式进行分解,从中得到关心的模式;在研究过程中,将关注点聚焦到作用域关系,这样可以调整审视某个特定设计元素的视角。

 

       在具体研究中,从作用域的对象、方法、字段和类型这四种的交互关系,找出我们感兴趣的几种关系,最终聚焦到方法调用、字段读取、状态改变及内聚,在第二章中对方法调用进行分析:将方法调用进行抽象,可以得到以下四个部分:发起调用的方法、被调用的方法以及它们分别位居的对象;然后从相似度角度,可以发现三种关系:

  • 闭合对象之间的相似度;
  • 闭合对象的类型之间的相似度;
  • 发起调用的方法和被调用的方法之间的相似度;

从这三个关系扩展为一个三维模型,就能引申出我们现有程序设计中的各种理论关系;

举例来说,

  • 如果两个对象相似,两个方法也相似,则调用关系非常有可能就是递归;
  • 而如果对象不相似但方法相似,则调用关系非常有可能就是重定向;
  • ...

扩展到三维空间,将方法相似度取为相似,则

  • 如果对象类型相似,对象也相似,这时就是递归;
  • 如果对象相似,对象类型是子类型,则关系就是扩展方法;
  • ...

       这样将面向对象之间的关系与程序理论结合,很容易去理解程序设计理论,提升开发人员的抽象思维能力;

 

 

       还有个有意思的地方就是,这个三维抽象空间里面还存在着不少地方是“盲区”,目前没有一种普遍接受的程序概念与之对应,这与元素周期表的思维很接近,顺着这种思维方式,我们的抽象与演化能力会不会大增呢?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值