轉貼 思考IoC

2021-04-13 23:48:25 字數 950 閱讀 3531

當人們面對複雜問題時應該何去何從?一種最為常用解決問題的方法便是分而治之,也就是將乙個複雜問題分解為可以解決的小問題。這種思想在軟體開發中得到了大量的應用,在軟體架構方面的表現之一就是分層的思想。關於分層優劣的討論,martin fowler在《企業應用架構模式》的第一章進行了深入的論述。

面對具體應用時,我們應該如何設計層次呢?dip(dependency inversion principle,依賴倒置原則)為我們指出了乙個方向:

a 高層模組不應該依賴於低層模組,二者都應該依賴於抽象

b 抽象不應該依賴於細節,細節應該依賴於抽象

之所以稱之為「倒置」,因為在傳統的結構化程式設計中,高層模組總是依賴於低層模組,而在物件導向程式設計中,其結構相對而言,是被「倒置」了。關於dip更詳細的討論,可以參考robert martin的《敏捷軟體開發》第11章。

當我們的應用抽象層次提高到足夠通用時,實際上就產生了乙個框架,因此,框架代表的是一種抽象。就像抽象類無法例項化物件一樣,單獨的框架並不具備任何意義,只有當我們使用這個框架,補充抽象中缺失的具體細節時,這個框架才是具備了活力。

使用通常意義的庫時,我們是作為主控方,控制著所有邏輯,而在使用乙個框架時,我們所編寫的部分是作為框架的細節補充到框架之中的,而框架本身已經定義好了它的邏輯,控制權是掌控在框架的手中。抽象控制著具體,這也就是框架之所以為框架的生存之本。同使用庫的時候截然不同,這種控制關係就是將我們通常習慣的控制關係「倒置」了。沒錯,這就是ioc(inversion of control)。因此,martin fowler在他的那篇大名鼎鼎的《ioc容器和dependencyinjection模式》才會提出ioc是框架所共有的特徵,也正是基於這樣的原因,針對許多輕量級容器解決實際上是依賴關係的特點,他才提出dependency injection,以正視聽。

本文**

debian alien 轉貼收藏

linux下常的見軟體包所指的是tar.gz,tar.bz2,rpm,deb等幾種 alien簡述 alien似乎是debian系統下的乙個安裝工具,檢視它的幫助 fideas zerone alien help usage alien options file file package file ...

程式設計風格(轉貼)

寫作乾淨美觀的 不僅僅使得 更容易閱讀,還使得 能夠成為一件藝術品。同微軟的匈牙利命名法一樣,在linux上程式設計主要有兩種程式設計風格 gnu風格和linux核心風格 程式設計風格 linux作為gnu家族的一員,上面的源 數以萬計,而在閱讀這些源 時我們會發現,不同的源 的美觀程度和程式設計風...

轉貼 位元組對齊

請看下面的結構 struct mystruct double dda1 char dda int type 對結構mystruct採用sizeof會出現什麼結果呢?sizeof mystruct 為多少呢?也許你會這樣 求 sizeof mystruct sizeof double sizeof c...