手工依賴注入。在原有例子的基礎上做小部分修改。 乙個
rpg遊戲,有武士的角色。武士為了榮耀而戰。首先要為乙個武士配備乙個合適的**。
(1)準備一件**(
sword)
public
class
sword
",strtarget); }
}
(2)乙個武士角色
public
class
samurai
public
void attack(string strtarget)
} (3)測試
[test]
public
void test1()
結果:砍死殭屍
當乙個類依賴於乙個具體實現時,稱為:這個類對具體實現的類緊耦合。武士類對劍類緊耦合。當類緊耦合時,它們不能在不通知它們的實現的情況下完成自身的修改。如果要更換**,那麼因為武士類對劍類緊耦合,那麼在修改**的時候,還要修改對劍類緊耦合的武士本身。為了避免緊耦合的類。我們通常通過介面來提供間接的層面。
(4)介面實現
public
inte***ce
iweapon
public
class
sword : iweapon
",strtarget); }
}
public
class
samurai
public
void attack(string strtarget)
} 現在**可以裝備不同的**了。但是,劍類物件仍然是在武士物件的構造器中建立的。我們仍然需要在為武士裝備另一種**的時候還要通知武士的實現,武士類仍然對劍類緊耦合。這裡有乙個簡單的解決方法。與其在武士類構造器內部建立劍類的例項,不如以構造引數的方式來代替。
(5)構造引數
public
samurai(iweapon weapon)
public
void test1()
現在,裝備武士,可以通過向武士類的構造方法向武士類注入**(劍)。這是乙個依賴注入的例子(具體來說是乙個構造注入)。現在建立另一種可能用到的**:
(6)新增**
public
class
shuriken : iweapon
的咽喉"
, target); }
}(7)測試
samurai
sam = new
samurai(new
sword());
samurai
sam2 = new
samurai(new
shuriken());
sam.attack("殭屍"
); sam2.attack("殭屍"
); 任何時候,當要建立乙個武士角色時,首先必須建立乙個**介面的實現,然後把它傳到武士的構造器中。現在修改武士**的時候,不用再來修改這個武士類的實現了,這個武士類的程式集可以和**類的程式集分開了。事實上,我們可以在不需要武士類原始檔的情況下新增新**了。手動依賴注入對於小型的專案來說是個有效的策略。
參考原文:
spring事物管理(一) 手動事物管理
執行一下 的時候需要注意的問題!注意 確保,自己建立的資料表的型別支援事物。支援事物的資料表的型別為 bdb 和 innodb。1.先建立 dao層和service層,先將專案搭建起來!userdao介面 package com.dl.code.dao created with intellij i...
Android極光推送(一)手動整合(步驟2)
注意 感覺部落格 網易部落格遷移 android極光推送 一 手動整合 完整版 自己寫的這篇太長了,為了方便查閱把他拆分,這是步驟2 瀏覽器後退,找到 android sdk 整合指南 手動整合步驟 匯入jar包 開啟解壓後的 jpushexample 1143290 或 jpush android...
(9) 手動實現reverse函式
簡單介紹5種實現方法 1.中心思想 從第乙個開始,相近的兩兩互換,然後除去最後乙個存入空列表,遞迴後相加 lists z v o b a def fz ls lsn global i if len ls 1 return ls for i in range len ls 1 ls i ls i 1 ...