定義
工廠方法模式(factory method pattern):定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到子類。這樣核心工廠類不再負責產品的建立,變成乙個抽象工廠角色,僅負責具體工廠子類必須要實現的介面。這樣進一步抽象的好處是系統在不修改具體工廠角色的情況下引進新的產品。
類圖及角色
抽象工廠(creator):工廠方法模式的核心,與應用程式無關。任何模式下建立的物件的工廠類都必須實現這個介面。
具體工廠(concrete creator):實現工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且接收客戶端呼叫建立產品物件。
抽象產品(product):工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。
具體產品(concrete product):實現了抽象產品定義的介面。具體產品由具體工廠建立,它們之間一一對應。
案例**
//日誌系統,充當抽象產品角色
public
inte***ce
logger
//檔案日誌記錄器,充當具體產品角色
public
class
filelogger
implements
logger
}//資料庫日誌記錄器,充當具體產品角色
public
class
databaselogger
implements
logger
}//日誌記錄器工廠介面,充當抽象工廠角色
public
inte***ce
logge***ctory
//檔案日誌工廠
public
class
filelogge***ctory
implements
logge***ctory
}//資料庫日誌工廠
public
class
databaselogge***ctory
implements
logge***ctory
}//客戶端
public
class
client
}
簡單工廠模式和工廠方法模式的對比
簡單工廠模式又叫靜態工廠模式,它用來例項化目標類的靜態類。簡單工廠是不完全滿足ocp。最大的區別:簡單工廠模式只有乙個工廠類,而工廠方法模式有一組實現了相同介面的工廠類。
優點在工廠方法模式中,工廠方法用來建立客戶所需要的產品,同時還向客戶端隱藏了哪種具體產品類將被例項化這一細節,使用者只需要關心所需要產品對應的工廠,無須關心建立細節,甚至無須知道具體產品類的類名。
基於工廠角色和產品角色的多型性設計是工廠方法的關鍵,他能夠讓工廠模式自主的建立產品物件,而如何建立這個物件的細節完全封裝在工廠類。
使用工廠方法模式最大的優點就是新加類的時候不用動源**,只要寫新的產品新的工廠來繼承對應的類就行了。 缺點
結構複雜度。
**複雜度。
客戶端程式設計複雜度。
管理複雜度。
如:當多個產品需要修改時,簡單工廠模式仍然僅僅修改唯一的工廠類,而工廠模式需要修改很多的類。
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...