對於抽象工廠模式,我們首先要明白的是——其是建立在工廠模式基礎之上的,其也屬於建立型設計模式。
在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯示指定它們的類,每個生成的工廠都能按照工廠模式提供物件。
理解:建立抽象工廠類來獲取工廠物件,建立繼承抽象類的工廠類,生成實體類物件以及建立乙個工廠創造器來獲取工廠。
思路:1.建立抽象工廠族類;
2.建立工廠介面;
3.建立抽象工廠族子類和實現工廠介面類;
4.建立個工廠創造器/生成器類,通過字串來獲取工廠;
5.設計public類,通過main實現呼叫。
具體設計:
1.設計抽象工廠族類abstractfactory,其中抽象方法名為getball、getfruit,返回值分別為ball和fruit;
2.設計名為ball和fruit倆個介面,其中ball介面內的方法為play,返回值為void,fruit介面內的方法為eat(),返回值為void;
4.設計兩個繼承抽象類的子類,分別基於給定的資訊生成實體類物件:ballfactory和fruitfactory;
5.設計工廠生成器factoryproducer來獲取具體工廠;
6.設計public類abstractfactorydemo來實現呼叫過程。
具體**模組:
1.抽象類abstractfactory:
abstract class abstractfactory
2.介面ball和fruit:
inte***ce ball
inte***ce fruit
3.實現介面類:
class baseball implements ball
}
class basketball implements ball
}
class football implements ball
}
public void eat()
}
class orange implements fruit
}
class pear implements fruit
}
4.設計基礎抽象類的兩個子類ballfactory和fruitfactory:
class ballfactory extends abstractfactory
if(balltype=="籃球")else if(balltype=="棒球")else if(balltype=="足球")
return null;
}public fruit getftuit(string fruittype)
}
class fruitfactory extends abstractfactory
if(fruittype=="蘋果")else if(fruittype=="橘子")else if(fruittype=="梨")
return null;
}public ball getball(string balltype)
}
5.工廠製造類factoryproducer:
class factoryproducerelse if(factory=="水果")
return null;
}
6.public主類abstractfactorydemo來實現呼叫:
public class abstractfactorydemo
}
總結:抽象工廠模式的實現可以劃分兩部分:第一部分即是對工廠的處理;第二部分即是對工廠內部具體的處理;最後再從頂向下的呼叫即可。
設計模式之抽象工廠模式學習
抽象工廠模式 提供了乙個建立一系列相關或相互依賴物件的介面,而無需指定它們的具體的類。它用於解決涉及多個產品系列的問題,包含所有產品的建立方法。abstractproducta和 abstractproductb 是兩個抽象的產品,之所以稱之為抽象就是因為它們可以有兩種不同的實現,productaa...
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...
設計模式學習之抽象工廠
tbase為抽象 tconcreate為具體.template class cconcretefactory 抽象工廠 註冊自己的工廠由使用者自己完成 物件的釋放由建立者自己維護 template class cbasefactory cbasefactory cbasefactory const ...