1、背景
現在有乙個使用場景:司機開車
一般這樣寫
public driver
}
2、問題
(1)耦合度高:driver中建立和持有car這個類,管理car的生命週期
(2)不易維護: car的通用性太強,無法細分汽車型號等等引數(比如自動擋和手動擋),以實現不同處理(不同汽車,點火,掛檔,踩油門,打方向等等操作,各不相同)
3、解決思路
背景中的例子,實質是「開xx汽車的司機,開車」,核心是開xx車;司機不是重點;如何開車,司機依賴於車的屬性。
所以,需要將司機的依賴物件車,注入到司機中,司機不需要自行引用車子,這個過程司機不需要關注。
4、具體方案
(1)car公共屬性介面
public inte***ce icar
(2)不同的car的類
寶馬
public class baoma implements icar
public void guadang()
public void caiyoumen()
public void ****ngxiang()
…}
法拉利
public class falali implements icar
public void guadang()
public void caiyoumen()
public void ****ngxiang()
…}
3、司機
public driver
public void drive()
...}
4、具體實現
//開寶馬的司機,開車
baoma baoma=new baoma();
driver mdriverbybaoma=new driver(baoma);
mdriverbybaoma.drive();
//開法拉利的司機,開車
falali falali=new falali();
driver mdriverbyfalali=new driver(falali);
mdriverbyfalali.drive();
設計模式 控制反轉 依賴注入
一 控制反 從簡單的 示例入手 郵件服務類 public class emailservice 郵件通知類 public class notifycationsystem 共兩個類,乙個郵件服務類,乙個郵件通知類,郵件通知類依賴於郵件服務類。郵件通知類必須精確的知道建立和使用了哪種型別的服務,此處高...
設計模式 控制反轉 依賴注入
一 控制反 從簡單的 示例入手 郵件服務類 public class emailservice 郵件通知類 public class notifycationsystem 共兩個類,乙個郵件服務類,乙個郵件通知類,郵件通知類依賴於郵件服務類。郵件通知類必須精確的知道建立和使用了哪種型別的服務,此處高...
C 設計模式之依賴注入
以下是通過 ioc框架 unity方式實現簡單的依賴注入 1.定義公共介面 inte ce ibook 2.建立兩個類,繼承自介面 ibook class booka ibook public string getname class bookb ibook 3.通過配置檔案註冊容器及指定主函式需要...