Ninject(一) 手動依賴注入

2021-09-05 22:32:38 字數 1586 閱讀 4640

手工依賴注入。在原有例子的基礎上做小部分修改。 乙個

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 ...