從工廠模式到依賴注入的邏輯演變

2021-07-04 13:10:27 字數 1497 閱讀 2668

在介紹工廠模式與控制反轉(

inversionof control

)及依賴注入(

dependencyinjection

)之前,先介紹下類的呼叫方法。目前呼叫方法總共有3種:

1.自己建立;

2.工廠模式;

3.外部注入,其中外部注入即為控制反轉

/依賴注入模式(

ioc/di

)。我們可以用

3個形象的東西來分別表示它們,就是

new、

get、

set。顧名思義,

new表示自己建立,

get表示主動去取(即工廠),

set表示是被別人送進來的(即注入),其中

get和

set分別表示了主動去取和等待送來兩種截然相反的特性,這

3個單詞代表了

3種方法的思想精髓。

無論是那一種方法,都存在兩個角色,那就是呼叫者和被呼叫者。下面我們通過例項來講解這

3種方法的具體含義。首先,我們設定呼叫物件為學生物件

student,

被呼叫者物件為圖書物件

book,

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

//book介面

publicinte***ce ibook;

trycatch(exception e);

try;

object obj = student.newinstance();

method.invoke(obj,book);

student student1 = (student) obj;

}catch(exception e){

e.printstacktrace();

returnstudent1;

public static string change(string str) {

stringsubstring = str.substring(0,1);

substring= substring.touppercase();

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

str= substring + str;

returnstr;

這樣只需呼叫

factory.getinstance("booka")

即可獲得

student

的例項。

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

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

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

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

從工廠模式到抽象工廠模式

之前我們說過簡單工廠模式,以及工廠模式,這次我們接下說抽象工廠模式,首先我們先看一下工廠模式及抽象工廠模式的定義。工廠模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類 抽象工廠模式 為建立一組相關或相互依賴的物件提供乙個介面,並且無需指定他們的具體類。...

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

工廠模式 控制反轉及依賴注入 工廠模式原本作為高階篇的乙個篇章 其難度充其量就那個難度 但是考慮與本章的聯絡,所以併入本章。在介紹工廠模式與控制反轉 inversion of control 及依賴注入 dependency injection 之前,先介紹下類的呼叫方法。目前呼叫方法總共有3種 1...