网站大量收购独家精品文档,联系QQ:2885784924

架构与思想:Phal Api核心设计与思想解读.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
架构与思想:Phal Api核⼼设计和思想解读 设计软件有两种⽅法:⼀种是简单到明显没有缺陷,另外⼀种复杂到缺陷不那么明 显。 --托尼. 尔 5.1.1 前⾔ 在软件⼯程这⼀学科和⾏业⾥,关于软件⼯程的解说有很多。有⼈说开发是⼀门艺 术;有⼈说开发是⼀种技艺;也有⼈说开发是⼀门哲学。但个⼈认同从实⽤主义和理 性的⾓度去理解。 例如⼀个框架,我们之所以认为它好是因为我们发现这个框架遵循了编程规范、适当 地使⽤了设计模式、巧妙地结合了设计原则、有着稳定的依赖、代码复杂度低、并且 有着很⾼代码覆盖率的单元测试等等。 也就是说,好的框架都是可以被解释的。既然可以被解释量化,也就可以学习、参考 和借鉴。 5.1.2 共性和可变性分析 关于共性和可变性分析,在 《设计模式解析》⼀书中有着⾮常到位的讲解。 CVA是⼀种很容易的理念,按我的理解即: 抽离共性、隔离变化 。有点类似易经⾥ ⾯的“变”与“不变” 。 诚然,在过去的教育中 (包括⼤学在内的),对于软件开发都着重谈论⾯向对象开 发,即OOD ,以致于很多⼈都对⾯向对象开发产⽣了很⼤的误解。⽽这种误解所带来 的实际情况就是: 我们都在进 ⾯向对象开发,但却是标准呆板的⾯向对象开发,缺 少⽣⽓,缺少活⼒ 。 很多⼈,都没有把我们开发⼈员作为专业⼈⼠看待,甚⾄连我们⾃⼰都否认我们是专 业的。所以很多时候当产品提出需求时,我们提供的开发周期往往会被外界以讲价的 ⽅式削减。何以?为什么医⽣给出的⼿术时间病⼈没有讨价呢?因为很简单,在病⼈ 的眼⾥,医⽣是专业的。 若我们也想达到专业的层次时,何以为?学习、思考和实践,我认为⾄少这三者是必 不可少的。 所以,当我们在对PhalApi进⾏设计时,我们进⾏了⼀次又⼀次地酝酿、尝试、思考。 我们在思考:这些功能是否真的会在实际项⽬中被使⽤?开发⼈员是否可能很好地进 ⾏扩展?此种决策是否便于单元测试、从思路上减少代码异味?。。。 我们谨记敏捷开发,不过度设计。但我们也确实需要⼀种思想上的指导。正好,我们 看到了 共性和可变性的分析 (commonality and variability analysis, CVA ) 。 5.1.3 CVA和三种视⾓、抽象类之间的关系 引⽤⼀下 《设计模式解析》⼀书中的图表: 在这种理念的指导下,我们会更愿意将接⼜开发过程的共性抽离统⼀起来,⽽可变性 部分的则可以由开发⼈员根据不同的项⽬情况进⾏快速定制实现。 5.1.4 不稳定性与抽象度分布 除了常谈及到的“低耦合、⾼内聚”外,在对代码进⾏静态分析和衡量其可维护度时, 还有⼀个值得注意的值,即:不稳定的度量。 不稳定的度量可以根据以下公式计算获得: I = 离⼼耦合 / (离⼼耦合 + 向⼼耦合) 因此从宏观上,我们的代码结构,从上层到下层,应该向着稳定的⽅向递增,也就是 说越底层越应稳定。对应 稳定依赖原则的规则 (SDP),包之间的依赖应该朝着稳定 的⽅向:不稳定的包应该依赖于更稳定的包。 又结合不稳定性与抽象分布图,我们PhalApi框架的代码 应该⼤部分分布在上图中的 抽象稳定区以实现框架⾼层的建设、少部分分布在具体不稳定区以提供⼀些基础的功 能 。 5.1.5 创建和使⽤分离 在框架的特性中,包括:可重⽤、IoC Container 以及SOLID五条原则的运⽤等。这⾥ 就部分SOLID原则的运⽤简单说明⼀下。 (1)S :单⼀职责原则 这是我们⼀直都坚持遵守的原则,因为,我们也坚持 短⽽美 的写法, 致⼒于编写优 雅的代码、编写⼈容易理解的代码 。 (2) :开放-封闭原则 我们⾸先希望的是在进⾏接⼜开发过程中,当需要新增⼀个接⼜时是开放的,对已有 的响应调⽤流程是封闭的。即我们只需要实现新接⼜逻辑即可,不需要改动其他过程 的调⽤。因此在OCP原则的指导下,我们通过结合⼯⼚⽅法封装了对接⼜的初始化和 调⽤。 (3)D :依赖倒置原则 PhalApi框架,最⼤的特⾊莫过于 它提供了⼀种如何快速进 接⼜开发的机制,但它 不强制你使⽤不必要的功能,甚⾄它还⿎励你通过它来尝试研发⾃⼰的框架 。更进⼀ 步,PhalApi引⼊了新颖明确的概念,⼀如服务。我们把客户端调⽤的接⼜称之为接⼜ 服务,把服务端⽤到的资源称之为资源服务。对于后者,PhalApi提供了灵活的DI机 制,以⽀持各项⽬定制化的开发。 5.1.6 PhalApi核⼼架构图 显然,到⽬前为⽌,从核⼼架构图所折射出PhalApi的结构和代码是如此的 简单明 了、统⼀规范。⾄少我是这么认为的,也是⼀直这样努⼒的。 从上图的核

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档