應用最廣泛的模式 工廠方法模式

2021-08-21 01:38:07 字數 1290 閱讀 8310

定義乙個建立物件的介面,讓子類決定例項化哪個類。

當a物件需要呼叫b物件的方法時,可以使用new關鍵字來建立乙個b例項,然後呼叫b例項的方法,這種做法的壞處在於:a類的方法直接呼叫了b類的類名(這種方式也被稱為硬編碼耦合),一旦系統需要重構:需要使用c類來代替b類時,程式不得不改寫a類**。如果應用中有100個或10000個類以硬編碼方式耦合了b類,則需要重寫100個、10000個地方…這顯然是一種非常可怕的事情。

換乙個角度來看這個問題:對於a物件而言,它只需要呼叫b物件的方法,並不是關心b物件實現、建立過程。考慮讓b類實現乙個ib介面,而a類只需要ib介面耦合——a類並不直接使用new關鍵字來建立b例項,二是重新定義乙個工廠類:ibfactory,由該工廠類來負責建立ib例項:而a類通過呼叫ibfactory工廠方法來得到ib的例項。

如果系統需要重構:需要使用c類代替b類,只需要讓c類也實現ib介面,並改寫ibfactory工廠中建立ib例項的實現**,讓該工廠生產c(實現了ib介面)例項即可,由於所有依賴ib例項的物件都是通過工廠來獲取ib例項的,所以它們都將改為獲得c例項,這就完成了系統重構。這種將多個類物件交給工廠類來生成的設計方式被稱為工廠方法模式。

//工廠類,用於建立具體物件

public class outputfactory

}

//抽象產品類,由具體產品類實現

public inte***ce output

//具體產品類,實現抽象類方法

public class printer implements output

public void getdata(string data)

}

//客戶端類

public class computer

//定義乙個模擬列印的方法

public void print()

//定義乙個模擬獲取字串輸入方法

public void keyin(string data)

public static void main(string args)

}

總的來說,工廠方法模式是乙個很好的設計模式,但存在缺點也是在所難免,每次我們為工廠方法模式新增新的產品時就要編寫乙個新的產品類,同時還要引入抽象層,這必然會導致類結構的複雜化,所以,在某些情況比較簡單時,是否要使用工廠方法模式,需要設計者權衡利弊了。

工廠方法模式 應用最廣

工廠方法模式 應用最廣 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。在任何需要生成複雜物件的地方,都可以使用工廠方法模式。用new就可以完成的建立無需要使用工廠方法模式。工廠方法四大模組 抽象工廠角色具體工廠角色抽象產品角色具體產品角色。這個和下乙個模式抽象工廠方法模式裡是一樣的,都有四類角...

工廠方法模式 廣泛應用的模式

工廠方法模式,一種物件建立型的設計模式,提供建立物件的介面,讓子類決定要例項化的物件。通過依賴注入的方式達到解耦 復用的目的。1 我們先來說下這個設計模式的關鍵點,簡單工廠 和 依賴注入 對,就這兩個。簡單工廠 和簡單工廠類似,該模式也是按需例項所需要的物件 依賴注入 在 簡單工廠 對基礎上,這個模...

工廠方法模式 應用最廣(建立型模式02)

什麼是工廠方法模式?定義乙個用於建立物件的介面,讓子類決定例項化哪個類。在任何需要生成複雜物件的地方,都可以使用工廠方法模式。用new就可以完成的建立無需要使用工廠方法模式。工廠方法四大模組 抽象工廠角色 abstractfactory 具體工廠角色 concretefactory 抽象產品角色 a...