依賴倒置詳情

2021-12-30 03:46:51 字數 1195 閱讀 9897

1. 先看乙個例子

假如你是乙個比薩店店長,現在你這樣管理你的產品。

public class dependentpizzastore else if ( type.equals("veggie") )else if ( type.equals("clam") )else if ( type.equals("pepperoni") )

}else if ( style.equals("sz") )else if ( type.equals("clam") )else if ( type.equals("pepperoni") )

}else

pizza.prepare();

pizza.bake();

pizza.cut();

pizza.box();

return pizza;}}

由上面**可以看出: 這個版本的pizzastore依賴於所有的比薩物件,因為它直接建立這些比薩物件;如果這些類的實現改變了,那麼可能必須修改pizzastore;因為對於比薩具體實現的任何改變都會影響到pizzastore。我們說pizzastore依賴於比薩的實現;每增加乙個比薩種類,就等於讓pizzastore多了乙個依賴;

可以看到上面**中,依賴物件很多。

當你例項化乙個物件時,就是在依賴它的具體類。

上面的例子中,是由比薩店類來建立所有的比薩物件,而不是委託給工廠。

2. 依賴倒置原則(dip-dependency inversion principle)

由上面的反例,我們可以看到,pizzastore是「高層元件」,而比薩實現是「底層元件」,很清楚地,pizzastore依賴這些具體的比薩類。

其實,**裡減少對於具體類的依賴是意見「好事」。這就引出了乙個oo設計原則,即依賴倒置原則dip。

依賴倒置原則定義:要依賴抽象,不要依賴具體類。

工廠方法模式是依賴倒置原則的一種體現。如圖

此時高層元件pizzastore和底層元件(就是這些比薩)都依賴了pizza抽象。

3. 遵循依賴倒置原則

變數不可以持有具體類的引用;不要讓類派生自具體類;不要覆蓋基類中已實現的方法;高層次的模組不應該依賴於低層次的模組,他們都應該依賴於抽象。抽象不應該依賴於具體實現,具體實現應該依賴於抽象。

依賴倒置原則

依賴倒置原則 為什麼會出現這個原則呢?q 所有的一切都源於變化,現在orm足夠強大了,看一下他的原始碼也會發現,工廠 介面的使用都是為了更好的擴充套件。舉個簡單的例子 你的老師讓你寫了乙個 豬 類,實現了他的移動方法,如下 public class pig public class client 第...

依賴倒置原則

1 抽象不應該依賴於具體,具體應該依賴於抽象。2 高層次模組不應該依賴於低層次模組,它們都應該依賴於抽象。對於乙個小賣部來說,有許多飲料,比如可樂 雪碧 橙汁 這時,我們把小賣部定義為乙個具體類,如果我們沒有選擇依賴倒置原則的話,我們就應該在小賣部中new coke new sprit new or...

依賴倒置原則

依賴倒置原則 說白了就是 針對介面程式設計。case 比如在 unity 中,為了使常用 可以復用,會把許多函式寫成程式集,每次做新專案的時候直接呼叫這些函式就可以。也是高層模組依賴低層模組 資源載入,當前專案是使用 resoucers 方式載入的 class resourcemanager 有一天...