从设计到架构.docx

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[从设计到架构]第四回:依赖的哲学(上)发布日期:2008.12.02 作者:/Anytao ? 2008 /A ,Anytao原创作品,转贴请注明作者和出处。/anytao/archive/2007/08/15/anytao_design_catalog.html从设计到架构 本文将介绍以下内容: 关于依赖和耦合 面向抽象编程 依赖倒置原则 控制反转 依赖注入 工厂模式 Unity框架应用 ?说在,开篇之前 在老子的“小国寡民”论中,提出了一种理想的社会状态:民至老死,不相往来。这是他老人家的一种社会理想,老死不相往来的人群呈现了一片和谐景象。因为不发生瓜葛,也就无所谓关联,进而无法倒置冲突。这是先祖哲学中的至纯哲理,但理想的大同总是和现实的生态有着或多或少的差距,人类社会无法避免联系的发生,所以小国寡民的理想成为一种美丽的梦想,不可实现。同样的道理,映射到软件“社会”中,也就是软件系统结构中,也预示着不同的层次、模块、类型之间也必然存在着或多或少的联系,这种联系不可避免但可管理。正如人类社会虽然无法实现小国寡民,但是理想的状态下我们推崇和谐社会,把人群的联系由复杂变为简单,由曲折变为统一,同样可以使得这种关联很和谐。所以,软件系统的使命也应该朝着和谐社会的目标前进,对于不同的关系处理,使用一套行之有效的哲学,把复杂问题简单化,把僵化问题柔性化,这种哲学或者说方法,在我看来就是:依赖的哲学,也就是本文所要阐释的中心思想。 *Hot:/《你必须知道的.NET》?1 引言因为在公司内部进行设计原则和设计模式的培训,我的第一个任务就是和大家就依赖倒置原则进行沟通。作为5大设计原则之一的DIP原则,单纯的由概念而实例在我认为并不能完全阐释清楚: 什么是依赖倒置? 为什么依赖倒置? 如何依赖倒置? 这几个关键的问题,所以我决定不单纯的通过DIP而DIP,而是从依赖这个最原始的概念讲起,来了解在面向对象软件设计体系中,关于“关系的处理”,也就是“依赖的哲学”。对,依赖就是关系,处理依赖也就意味着处理关系。因为,我们人类是最善于搞关系的动物,所以原本可以简单的理论,在人类的意识哲学中变得复杂而多变,以至于我们本应简单的道理变得如此复杂,这就是依赖。那么,从依赖讲起来了解依赖倒置原则,我觉得首先应该回到以下的问题: 控制反转、依赖倒置、依赖注入这些概念,你认识但是否熟悉? Unity、ObjectBuilder、Castle这些容器,你相识但是否相知? 面向接口、面向抽象、开放封闭,这些思想,你了解但是否了然? 带着对这些问题的思考和思索,/Anytao带领大家就依赖这个话题开始一次循序渐进的面向对象之旅,以解答这些从一开始就有足够吸引力的问题,从原理到实例,从关系到异同,我期待这篇文章能带来一些认知的变革。2 什么是依赖,什么是抽象2.1 关于依赖和耦合:由小国寡民到和谐社会在老子的“小国寡民”论中,提出了一种理想的社会状态:民至老死,不相往来。这是他老人家的一种社会理想,老死不相往来的人群呈现了一片和谐景象。因为不发生瓜葛,也就无所谓关联,进而无法倒置冲突。这是先祖哲学中的至纯哲理,但理想的大同总是和现实的生态有着或多或少的差距,人类社会无法避免联系的发生,所以小国寡民的理想成为一种美丽的梦想,不可实现。同样的道理,映射到软件“社会”中,也就是软件系统结构中,也预示着不同的层次、模块、类型之间也必然存在着或多或少的联系,这种联系不可避免但可管理。正如人类社会虽然无法实现小国寡民,但是理想的状态下我们推崇和谐社会,把人群的联系由复杂变为简单,由曲折变为统一,同样可以使得这种关联很和谐。所以,软件系统的使命也应该朝着和谐社会的目标前进,对于不同的关系处理,使用一套行之有效的哲学,把复杂问题简单化,把僵化问题柔性化,这种哲学或者说方法,在我看来就是:依赖的哲学,也就是本文所要阐释的中心思想。 因为,“耦合是不可避免的”,所以我们首先就从认识依赖和耦合的概念开始,来一步步阐释我们的依赖哲学思想:什么是依赖和耦合 依赖,就是关系,代表了软件实体之间的联系。软件的实体可能是模块,可能是层次,也可能是具体的类型,不同的实体直接发生依赖,也就意味着发生了耦合。所以,依赖和耦合在我看来是对一个问题的两种表达,依赖阐释了耦合本质,而耦合量化了依赖程度。因此,我们对于关系的描述方式,就可以从两个方面的观点来分析:从依赖的角度而言,可以分类为: 无依赖,代表没有发生任何联系,所以二者相互独立,互不影响,没有耦合关系。 单向依赖,关系双方的依赖是单向的,代表了影响的方向也是单向的,其中一个实体发生改变,会对另外的实体产生影响,反之则不然,耦合度不高。 双向依赖,关系双方的依赖是相互的,影响也是相互的,耦合度较高。 从耦合的角度而言,可以分类为(此处回归到具体的代

文档评论(0)

白领文档(原创) + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档