工廠模式 控制反轉及依賴注入

2021-05-24 12:27:09 字數 1346 閱讀 9098

工廠模式、控制反轉及依賴注入

工廠模式原本作為高階篇的乙個篇章(其難度充其量就那個難度),但是考慮與本章的聯絡,所以併入本章。

在介紹工廠模式與控制反轉(inversion of control)及依賴注入(dependency injection)之前,先介紹下類的呼叫方法。目前呼叫方法總共有3種:1.自己建立;2.工廠模式;3.外部注入,其中外部注入即為控制反轉/依賴注入模式(ioc/di)。我們可以用3個形象的東西來分別表示它們,就是new、get、set。顧名思義,new表示自己建立,get表示主動去取(即工廠),set表示是被別人送進來的(即注入),其中get和set分別表示了主動去取和等待送來兩種截然相反的特性,這3個單詞代表了3種方法的思想精髓。

無論是那一種方法,都存在兩個角色,那就是呼叫者和被呼叫者。下面我們通過例項來講解這3種方法的具體含義。首先,我們設定呼叫物件為學生物件student,被呼叫者物件為圖書物件book,要設計的

**功能是學生學習圖書。我們一般習慣於一種思維程式設計方式:介面驅動,可以提供不同靈活的子類實現:

//book介面

public inte***ce ibook;

trycatch (exception e);

try;

object obj = student.newinstance();

method.invoke(obj,book);

student student1 = (student) obj;

}catch (exception e){

e.printstacktrace();

return student1;

public static string change(string str) {

string substring = str.substring(0,1);

substring = substring.touppercase();

str = str.substring(1,str.length());

str = substring + str;

return str;

這樣只需呼叫factory.getinstance("booka")即可獲得student的例項。

依賴注入的優點在於在容器中定義物件,容器會自動組建出乙個例項,缺點就是生成乙個物件的步驟變得複雜了,對於不習慣這種方式的人會覺得有些彆扭和不直觀。

總結:從工廠模式到依賴注入,搞得那麼複雜究竟為了什麼呢?工廠模式的作用就是將物件的建立擊中到工廠容器中,這樣對於物件的修改也集中到容器中進行,便於維護。而工廠模式由於不通用,故對於不同的物件就需要在容器中建立不同的方法,因此利用基於反射機制的動態程式設計技術又可以解決此問題,但是生成物件的過程越來越繁瑣。

工廠模式 控制反轉及依賴注入

在介紹工廠模式與控制反轉 inversion of control 及依賴注入 dependency injection 之前,先介紹下類的呼叫方法。目前呼叫方法總共有3種 1.自己建立 2.工廠模式 3.外部注入,其中外部注入即為控制反轉 依賴注入模式 ioc di 我們可以用3個形象的東西來分別...

工廠模式,控制反轉(依賴注入)

在介紹工廠模式與控制反轉 inversion of control 及依賴注入 dependency injection 之前,先介紹下類的呼叫方法。目前呼叫方法總共有3種 1.自己建立 2.工廠模式 3.外部注入,其中外部注入即為控制反轉 依賴注入模式 ioc di 我們可以用3個形象的東西來分別...

設計模式 控制反轉 依賴注入

一 控制反 從簡單的 示例入手 郵件服務類 public class emailservice 郵件通知類 public class notifycationsystem 共兩個類,乙個郵件服務類,乙個郵件通知類,郵件通知類依賴於郵件服務類。郵件通知類必須精確的知道建立和使用了哪種型別的服務,此處高...