`
jiangshuiy
  • 浏览: 339300 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

元素模式初体验

 
阅读更多

 

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

 

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

 

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

 

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

 

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

 

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

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

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

举例来说,

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

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

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

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

 

 

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

0
1
分享到:
评论

相关推荐

    Spartan浏览器初体验.docx

    Spartan浏览器初体验 Spartan浏览器是微软推出的一款创新的网络浏览器,它与传统的Internet Explorer有所不同,尤其是在用户体验和功能集成方面。其中最引人注目的特性是整合了Cortana智能语音助手,为用户提供了一...

    猎豹浏览器初体验.docx

    《猎豹浏览器初体验》 猎豹浏览器,作为一款创新的双核安全浏览器,自发布以来就备受关注。它的核心特点在于安全、速度和独特的设计风格,为用户带来全新的浏览体验。这款浏览器不仅具备了基本的浏览功能,还融入了...

    web dynpro for abap初体验.doc

    这篇文档“web dynpro for abap初体验.doc”可能详细介绍了作者Harry-2013初次接触并探索Web Dynpro for ABAP的过程和心得。 Web Dynpro,简称WD,是一种组件化、模型驱动的应用程序开发框架,特别适用于SAP环境。...

    人工智能初体验之手势识别.pdf

    手势识别是人工智能领域的一个重要分支,它允许计算机通过分析图像来识别和理解人的手势...随着人工智能技术的不断发展,未来人们的生活将越来越多地与AI相结合,因此这种初体验对于培养未来的技术型人才具有重要意义。

    birt报表开发 (二)、birt报表初体验-第一个报表

    在本篇博文中,我们将深入探讨"Birt报表开发"的第二部分——"Birt报表初体验-第一个报表"。Birt(Business Intelligence and Reporting Tools)是开源的企业级报告解决方案,它提供了一种强大的方式来创建、设计和...

    Extjs 初体验

    标题中的“Extjs 初体验”表明我们即将探讨的是Ext JS这一JavaScript库的入门学习。Ext JS是一个用于构建富客户端Web应用的框架,它提供了一系列强大的组件和工具,包括数据绑定、可拖放功能、表格、菜单等。这篇...

    微软官方WP8开发初体验教程1

    标题中的“微软官方WP8开发初体验教程1”指出,这是一个关于Windows Phone 8 (WP8) 应用开发的基础教学资源,由微软官方提供,适合初学者入门。描述中提到,教程包括视频和配套文档,即使不观看视频,也能通过文档...

    新兵报到《马踏千军》手游首测初体验.docx

    随着游戏进程的推进,玩家将解锁更多的功能和玩法,如坐骑养成、武器强化、武将招募等,这些元素丰富了游戏的ARPG体验。同时,游戏中的战役模式让玩家仿佛置身于真实的三国战场上,体验御马亲征的豪迈之情。 #### ...

    重塑用户体验 卓越设计实践指

    总的来说,《重塑用户体验:卓越设计实践指南》是一本全面覆盖用户体验设计各个方面的参考书,无论是初入设计行业的新人,还是经验丰富的专业人士,都能从中受益匪浅,提升自己的设计能力和创造出更加出色的用户体验...

    web dynpro for abap初体验 图文并茂

    1. MVC架构:Web Dynpro采用MVC模式,将应用程序逻辑分为模型(Model)、视图(View)和控制器(Controller)三个部分。模型负责数据处理,视图负责用户界面呈现,控制器协调模型和视图的交互。 2. 数据绑定:Web ...

    GoF 23种设计模式解析附C++实现源码(2nd Edition).pdf

    在完成所有设计模式的解析后,作者回顾了整个学习过程中的心路历程,包括初读GoF原著时的困惑、实现过程中遇到的问题以及最终领悟设计模式精髓时的喜悦。这一过程不仅仅是技术上的成长,更是一种思维方式的转变。 #...

    kaggle-darkmode:添加到KaggleCSS,以创建黑暗模式体验

    5. **渐进增强**:为了兼容不同浏览器和设备,项目可能采用渐进增强的方法,即在不支持CSS黑暗模式的环境中仍能提供良好的用户体验。 在"压缩包子文件的文件名称列表"中,我们看到一个名为"kaggle-darkmode-main"的...

    [酒店行业]以体验经济理论引导酒店餐饮发展——省“四新”培训后的一些想法(doc 5页).doc

    在酒店业中,体验经济的元素其实已经初现端倪,如婚礼、怀旧主题餐厅等都是提供体验的例子。例如,和平饭店的怀旧体验、锦江饭店的独特魅力,以及东湖花园宾馆的环境感受,都是酒店餐饮在提供物质享受的同时,融入了...

    初代数码格客,玩出了“电商导购第一股”.zip

    这种模式的核心在于信息整合与推荐,通过大数据分析、用户行为研究以及精准营销,为消费者提供个性化、高效率的购物体验。初代数码格客正是抓住了这个市场空白,将技术与商业智慧相结合,实现了从零到一的突破。 ...

    HeadFirst_pdf.zip

    - 访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 7. **设计模式的实际应用**: 设计模式不仅适用于 Java,也可以应用于 C#、Python...

    易语言坚持初心记事本

    《易语言坚持初心记事本》是一款基于易语言开发的简单文本编辑软件,它体现了编程者对于编程初心的坚守和对用户体验的关注。易语言是一种中国本土原创的编程语言,其设计目标是降低编程门槛,让普通用户也能进行程序...

    上海新天地商业模式探讨.pptx

    上海新天地的投资总额约为1.5亿美元,1999年初开始建设,2000年6月完成新天地广场的一期工程,2001年9月正式对外营业。占地三万平方米,建筑面积六万平方米,项目旨在保护和利用原有的石库门建筑,同时引入现代元素...

    参考资料-体验区景观设计管理与实务(95)页.zip

    《体验区景观设计管理与实务》是一份...通过学习这份《体验区景观设计管理与实务》,读者可以全面了解景观设计的各个方面,提升专业技能,无论是对于初入行业的新人还是经验丰富的从业者,都将是一份宝贵的参考资料。

    软件工程与用户体验设计教程.pptx

    - **软件危机**:20世纪60年代末至70年代初,软件开发失败率高,成本严重超支,催生了对软件工程的需求。 - **标准制定**:IEEE等机构制定了多项软件工程标准,规范行业发展。 - **教育发展**:随着软件工程重要...

    Knockoutjs 学习系列(一)ko初体验

    MVVM模式是前端开发中常见的设计模式,它将用户界面(View)与业务逻辑(Model)解耦,通过ViewModel作为中介层,实现视图与模型数据的双向绑定。这种模式的优点是使前端代码更加清晰,易于维护和扩展。 Knockoutjs...

Global site tag (gtag.js) - Google Analytics