設計模式 依賴注入

2021-09-10 10:04:45 字數 1195 閱讀 7434

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.通過配置檔案註冊容器及指定主函式需要...