提供乙個介面,讓該介面負責建立一系列「相關或者相互依賴的物件」,無需指定它們具體的類。——《設計模式》gof
抽象產品類角色(abstractproduct):為抽象工廠中相互依賴的每種產品定義抽象介面物件,也可以這樣說,有幾種產品,就要宣告幾個抽象角色,每乙個抽象產品角色和一種具體的產品相匹配。
具體產品類(concreteproduct):具體產品類實現了抽象產品類,是針對某個具體產品的實現的型別。
抽象工廠類角色(abstract factory):定義了建立一組相互依賴的產品物件的介面操作,每種操作和每種產品一一對應。
抽象工廠類角色(abstract factory):定義了建立一組相互依賴的產品物件的介面操作,每種操作和每種產品一一對應。
要設計一套房子,當然我們知道房子是由房頂、地板、窗戶、房門組成的,別的元件暫時省略,先設計一套古典風格的房子,再建立一套現代風格的房子,再建立一套歐式風格的房子,這麼多套房子,我們該怎麼辦呢?今天我們要講的【抽象工廠】模式可以很好的解決多套變化的問題。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
//抽象工廠模式:做菜
namespace pattern
/// /// 切菜
///
public abstract class cutting
/// /// 炒菜
///
public abstract class stirfry
/// /// 抽象工廠類
///
public abstract class abstractfactory
/// /// 做油燜茄子
///
public class qzwashing : washing
}public class qzcutting : cutting
}public class qzstirfry : stirfry
}/// /// 具體工廠:油燜茄子
///
public class qzfactory : abstractfactory
public override cutting createcutting()
public override stirfry createstirfry()
}/// /// 做西紅柿炒雞蛋
///
public class xhswashing : washing
}public class xhscutting : cutting
}public class xhsstirfry : stirfry
}/// /// 具體工廠:西紅柿炒雞蛋
///
public class xhsfactory : abstractfactory
public override cutting createcutting()
public override stirfry createstirfry()
}// ...
class program}}
如果系統需要多套的**解決方案,並且每套的**方案中又有很多相互關聯的產品型別,並且在系統中我們可以相互替換的使用一套產品的時候可以使用該模式,客戶端不需要依賴具體實現。 李建忠設計模式(一)
目錄 1.軟體設計的目標 2.物件導向設計原則 1.重新認識物件導向 2.物件導向設計原則 1.依賴倒置原則 dip 2.開放封閉原則 ocp 3.單一職責原則 srp 4.liskov替換原則 lsp 5.介面隔離原則 isp 6.有限使用物件組合,而不是類繼承 7.封裝變化點 8.針對介面程式設...
李建忠設計模式 原型模式
目錄 1.原型模式 prototype 1.動機 2.定義 3.結構圖 4.模式的組成 2.例項 3.要點總結 4.參考 使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件。模式設計 gof 原型類 prototype 原型類,宣告乙個clone自身的介面 具體原型類 concret...
李建忠設計模式 構建器模式
目錄 1.構建器模式 1.動機 2.模式定義 3.結構圖 4.模式的組成 2.例項 1.描述 2.3.要點總結 4.實現要點 5.參考 將乙個複雜物件的構建與表示相分離,使得同樣的構建過程 穩定 可以建立不同的表示 變化 1 抽象建造者角色 builder 為建立乙個product物件的各個部件指定...