在介紹工廠模式與控制反轉(
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...