概述
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factorymethod使乙個類的例項化延遲到其子類。
適用性1.當乙個類不知道它所必須建立的物件的類的時候。
2.當乙個類希望由它的子類來指定它所建立的物件的時候。
3.當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。
參與者
1.product
定義工廠方法所建立的物件的介面。
2.concreteproduct
實現product介面。
3.creator
宣告工廠方法,該方法返回乙個product型別的物件。
可以呼叫工廠方法以建立乙個product物件。
4.concretecreator
重定義工廠方法以返回乙個concreteproduct例項。
類圖
例子
product
public
inte***ce work
concreteproduct
public
class
studentwork
implements
work
}
public
class
teacherwork
implements
work
}
creator
public
inte***ce iworkfactory
concretecreator
public
class
studentworkfactory
implements
iworkfactory
}
public
class
teacherworkfactory
implements
iworkfactory
}
test
public
class test
}
result
學生做作業!
老師審批作業!
二十三種設計模式之 (十) 原型模式
prototype 原型模式 實際也叫轉殖模式 用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節 原型模式的優點 結構圖 例項 建立乙個person物件,通過原型模式轉...
二十三種設計模式之組合模式
組合模式 將物件聚合成樹形結構來表現 整體 部分 的層次結構。組合模式能讓客戶以一致的方式來處理個別物件以及物件組合。也就是我們可以忽略物件組合與個體之間的差別。應用場景 餐廳合併列印主選單 子選單 public abstract class menucomponent public string ...
二十三種設計模式之工廠模式
工廠模式的核心 例項化物件 原因 有些物件不能直接例項化,比如介面 抽象類及複雜物件的其他依賴 核心 呼叫工廠class的靜態方法例項化物件 以日誌為例 public class staticfactory 核心 先建立工廠物件,之後呼叫工廠方法 例項化工廠模式 public class insta...