1.問題由來:類A直接依賴類B,假如要將類A改成依賴類C,則必須經過修改類A的代碼來達成。這種場景下,類A通常是高層模塊,負責複雜的業務邏輯;類B和類C是低層模塊,負責基本的原子操做;假如修改類A,會給程序帶來沒必要要的風險。編程
2.解決方案:將類A修改成依賴接口I,類B和類C各自實現接口I,類A經過接口I間接與類B或者類C發生聯繫,則會大大下降修改類A的概率。(其實換成接口,可能下面的不少代碼都不須要變了,若是仍是A,B的對象實例,那麼下面的代碼可能會發生修改。)設計模式
3.依賴倒置原則針對的是接口編程。框架
4.對於容易發生的變化的地方,提供接口,接口具備高度抽象性,讓其進行接收,這樣就能夠極大的減小修改高層模塊中的代碼。ide
上面的僅僅是純概念自己的理解:spa
如下是貨真價實的理解。設計
繼承的做用是複用前人寫的代碼orm
多態的做用是前人寫好的框架,該框架能夠調用後來人寫好的代碼。這正是設計模式的精髓。想一想也是。(這就是可擴展,這是否是很厲害)。對象
舉例說明:繼承
假設計算機有3大重要部件:cpu,硬盤,內存條接口
爲了可以讓計算機可以和三大部件進行解耦合,意思就是計算機能夠安裝任何型號的cpu,硬盤,內存條。設計原則就是讓計算機依賴三大部件(高層依賴於抽象層),讓實現層依賴於抽象層,各類類型的cpu去繼承抽象層,這樣達到了高層和實現層的解耦合,也讓實現層和實現層之間解耦合。