技术开发 频道

如何用C#实现依赖注入?



    【IT168 专稿】夜深人静,四周一片宁静,月光如水银般倾泄,把大地染成一片银白。此时,满天的繁星像无数颗璀璨的宝石,把浩翰的夜空点缀得点点闪烁。与此相影成趣的是亿景公司三楼软开发部却灯火通明。苍穹无言,星月含情。也不知道过了多久,东方的天空开始渐渐发白,不知不觉中已近天明。张力揉搓了一下通红的双眼,然后继续加班修改昨天给项目主管退回来的软件程序。张力是一个软件开发程序员,在昨天的软件项目开发评审会议上,他负责的程序被项目经理西门评点为完全不符合OO设计模式和设计之道。软件设计严重出现四个“腐烂”的征兆,就是过于僵硬、过于脆弱、不可复用性和粘滞性过高。

张力看着窗外发白的天空,想起了项目经理西门对他的评价:一是程序过于僵硬,使软件难以更改,每一个改动都会造成一连串互相依靠的模块的改动,这样的后果是谁也不敢改动,因为他永远也不知道一个改动何时才能完成。二是过于脆弱,会使当软件改动时,系统会在许多地方出错,并且错误经常发生在概念上与改动的地方没有直接联系的模块中。这样的软件无法维护,而且每一次维护都使软件变得更加难以维护。还有就是不可复用性,致使不能复用在其它项目中、或本项目的其它位置中。张力叹了一口气,难道他的软件设计真的象西门经理下班前说的一句话,他还没有开天眼,领悟软件设计之道?

    一.什么是软件设计之道?

    终于挨到了上班的时候,张力赶快洗个脸后走到项目主管西门经理的办公室,向他请教什么是开天眼和悟道。西门看着一整夜没有睡觉而双眼通红的张力说:“什么是道?道是人们对于世界的一些最基本的规律和法则的认识。悟道有五眼六通之说,其中以天眼通为首。大家或多或少都听说过“道”这个词,却不知关键中的关键是什么?简单说就是越是简单的道理越是接近本质。悟者,是能将眼前反观内境,能将身侧远望星空。悟性高的人,是站得更高,看得更远,想得更深,做得更接近本质。悟心就是觉悟之心,我们把透彻一种智慧称为“悟道”。而穿透和超越了事物表象,直接达到事物的本来面目的智慧,可以称作 “顿悟”——就是在刹那间豁然贯通、洞若观火。

    “软件设计也需要用心体会方能悟出软件设计之“道”。软件设计之“道”,也不在于设计有多么的华丽、精巧,而在于其朴实、自然,最终达到“以无招胜有招”,进入一个新的境界”。西门停顿了一下,继续说:“那么,在软件设计过程中是否存在一些基本的原则,我们可以在今天的软件交流会上与各同事再探讨一些在软件设计中最基本的原则”。

    “程序设计的上乘修练方法,可分成两个部份,就是外家功夫和内家功夫。上乘的软件设计之道必须刚柔相济、内外兼修,回归自然,遵守基本法则”。西门在软件设计交流会上总结说:“要想悟出软件设计之道,我们先看看系统的一些“外家”特性,包括可读性、高灵活性、易扩展性、通用性、可移植性,这些特性可概括为“外家白箱特性”。而系统内部也要有一些“内家”属性,如高内聚、低耦合,这些内部属性更侧重内部结构性,概括为“内家黑箱属性”。

    同时,西门还提到为了使一个系统设计具有这些优秀的特性,可使用一些手段和方法。这些方法/手段包括抽象(提高通用性)、封装(增强内聚性)、分离(降低耦合性)等等。当对这些方法/手段进行细化、分类、概括时,就产生了一些设计原则/准则,比如面向接口编程、优先使用对象组合等等。这些准则/原则在一定场景下的经典表现方式,就产生了设计模式。
0
相关文章