提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。
工廠模式:乙個工廠類用來建立多個產品族中的同一種產品。
抽象工廠模式:多個工廠類用來建立多個產品族。每個產品族中有多個種類的產品。
優點:當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。
缺點:難以支援在產品族中增加新種類產品。需要在抽象的建立產品物件介面中和它的實現類中修改**。
/* 乙個產品族(套裝)中包含產品種類:a(上衣),b(褲子)
* a類產品有a1,a2兩個款式
* b類產品有b1,b2兩個款式
* 套裝1包含a1,b1
* 套裝2包含a2,b2
* */
// 建立a類產品的公共介面
inte***ce abstractproducea
// 建立一些a類產品:a1,a2
class producea1 implements abstractproducea
}class producea2 implements abstractproducea
}// 建立b類產品的公共介面
inte***ce abstractproduceb
// 建立一些a類產品:b1,b2
class produceb1 implements abstractproduceb
}class produceb2 implements abstractproduceb
}// 建立某個產品族中的各類產品
inte***ce abstractfactory
// 建立套裝1中各類產品的工廠
class concretefactory1 implements abstractfactory
@override
public abstractproduceb createproduceb()
}// 建立套裝2中各類產品的工廠
class concretefactory2 implements abstractfactory
@override
public abstractproduceb createproduceb()
}// 客戶端
public class client
}output:
producea1 creation completion
produceb1 creation completion
/* 如果要增加新種類的產品:帽子c */
// abstractfactory 要改,其具體實現類也要改
/*inte***ce abstractfactory
class concretefactory1 implements abstractfactory
@override
public abstractproduceb createproduceb()
@override
public abstractproducec createproducec()
}class concretefactory2 implements abstractfactory
@override
public abstractproduceb createproduceb()
@override
public abstractproducec createproducec()
}inte***ce abstractproducec
//建立一些c類產品:c1,c2
class producec1 implements abstractproducec
}class producec2 implements abstractproducec
}*/
設計模式 建立型 抽象工廠
pragma once ifndef abstractfactory h define abstractfactory h 抽象基類abstractproducta,代表產品a 的抽象 class abstractproducta virtual abstractproducta 派生類concre...
建立型設計模式 抽象工廠
抽象工廠模式 abstractfactory 每乙個模式都是針對一定問題的解決方案,工廠方法模式針對的是乙個產品等級結構 而抽象工廠模式針對的是多個產品等級結果。產品族 是指位於不同產品等級結構中,功能相關聯的產品組成的家族。一般是位於不同的等級結構中的相同位置上。每乙個產品等級結構中有多少個具體的...
設計模式 建立型 抽象工廠模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客...