設計模式之依賴宗的殺手不太冷

2021-09-27 07:59:42 字數 2166 閱讀 3266

依賴倒置原則(dependence inversion principle)是程式要依賴於抽象介面,不要依賴於具體實現。

簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。

小語跟胖子一步三回頭的離開了介面宗之後,來到了依賴宗。

不像介面宗的熱鬧,這裡可就冷清多了,走了半天,乙個人影都沒有看到。

一陣風吹過,只聽見落葉的嘩嘩聲。

一陣寒意讓小語渾身一哆嗦!

小語不由的問旁邊的胖子,「這裡真的有人麼?怎麼感覺鬼氣森森的?」

胖子反而一臉輕鬆的道:「當然了!忘了給你說了,依賴宗以暗殺而出名,他們是乙個盛產殺手的宗門,所以有點神秘。」

小語聽到這是個殺手宗門,就更緊張了,不由得跟胖子的距離更近了幾分。

這時,小語突然感覺到有人在拍他的肩膀,身體一緊,慢慢扭過頭去,只見一張陰森森的鬼臉出現在了他的眼前,嚇得他乙個箭步往前,躲在了胖子的身後。

胖子注意到這個鬼臉,反而是一臉喜色,說道:「007你在這裡啊,真是太好了!」

小語一臉懵逼,「007?」

胖子介紹道,「小語,這個是007,是我的乙個熟人。」

這時,007也去掉了鬼臉面具,露出一張陽光帥氣的臉龐。

雙方經過一番介紹,胖子表明了來意,主要是向小語展示各大宗們是如何遵循他們的法則的。

007笑道,「這個簡單,就拿我們殺手為例吧!我們殺手存在的意義是殺人,而這個被殺的「人」並不是乙個明確的個人,只有具體任務下來的時候我們才知道,抹去的目標是誰!用示例來說明一下吧!」

假設007現在要去抹殺掉張三:

//殺手007

public class killer007

}

定義張三

//需要被抹殺的目標 張三

public class zhangsan

public string getname()

}

現在派007去抹殺掉張三

killer007 killer007=new killer007();

killer007.killguys(new zhangsan("張三"));//007殺掉張三

007完美的完成了抹殺張三的任務。

現在上面又給了007新的任務,去抹殺掉李四。

但是007沒有抹殺李四的方法,只能抹殺張三,這就不合理了。只能重新訓練007去具備抹殺其他人的方法(增加新的方法),這顯然不是很合理。

這個時候就到了依賴倒置原則出場的時候了,我們應該面對抽象程式設計,而不應該是具體的細節。

張三和李四的抽象是什麼?

是人!那麼我們遵循依賴倒置原則重新設計。

定義所有人都會實現的抽象類

//所有人都會實現這個類

public abstract class guy

public string getname()

}

殺手007不再依賴細節,依賴於抽象

//殺手007

public class killer007

}

張三和李四實現guy

//需要被抹殺的目標 張三

public class zhangsan extends guy

}//李四

public class lisi extends guy

}

指派007去抹殺掉張三和李四

killer007 killer007=new killer007();

killer007.killguys(new zhangsan("張三"));//007殺掉張三

killer007.killguys(new lisi("李四"));//007殺掉李四

小語雖然明白了,但是卻聽的渾身發寒,第一次見到以殺人來舉例子的。

不過他還是說出了他的疑問,「那麼這個依賴倒置的「倒置」是什麼意思呢?」

007笑道:「說一下我們的第一種設計方式,常規的思考是這樣的:

」殺手---->張三「,

但是我們不想讓殺手全部依賴具體的實現,

接下來就要倒置我們的思想了,我們先從張三來思考:張三抽象出人,張三和殺手都依賴於人這個抽象,

」張三---->人<-----殺手」,

這就是思想的倒置了。「

設計模式之依賴倒轉原則

a.高層模組不應該依賴低層模組。兩個都應該依賴抽象。b.抽象不應該依賴細節。細節應該依賴抽象 物件導向開發時,為了使得常用 可復用,一般都會把這些 寫成許多的函式庫,我們在做專案時呼叫這些底層的 函式就可以了。比如我們做的專案大多低層模組。要訪問資料庫,所以我們就會把訪問資料庫的 寫成函式,每次做新...

設計模式之依賴倒置正規化

定義 高層模組不應該依賴底層模組,二者也不應該存在直接的依賴關係,應依賴於抽象類。理解 倒置 依賴是指乙個類t的細節由另乙個類q實現。若是先定義好類q,然後在類t中直接引用類q,即可實現所需功能,這種依賴行為稱為 正置 若此時定義乙個q的抽象類w,類t中引用的是類w,也能實現所需功能,這種依賴行為稱...

C 設計模式之依賴注入

以下是通過 ioc框架 unity方式實現簡單的依賴注入 1.定義公共介面 inte ce ibook 2.建立兩個類,繼承自介面 ibook class booka ibook public string getname class bookb ibook 3.通過配置檔案註冊容器及指定主函式需要...