參考書——《HeadFirst設計模式》
定義:提供一個接口,用於創建相關或依賴對象的家族,而不需要明確指定具體類。
要理解抽象工廠,先得理解兩個概念:產品族 &產品等級(這兩個詞,主要用來理解)
http://lavasoft.blog.51cto.com/62575/11674/
就用HeadFirst設計模式裏的例子:原料工廠就是一個抽象工廠,紐約原料工廠、芝加哥原料工廠就是上圖的具體工廠,它們都生產蛤蜊、生麪糰、乾酪等(這些就是產品族);紐約臨海,生產新鮮蛤蜊,芝加哥則生產冷凍蛤蜊,新鮮蛤蜊和冷凍蛤蜊就是一個產品等級。
抽象工廠和工廠方法的比較:
都是負責創建對象的。但是:工廠方法利用的是繼承,意味着,用工廠方法創建對象,需要擴展一個類,並實現它的工廠方法;而抽象工廠利用的是對象的組合。可以這麼理解:工廠方法“潛伏”在抽象工廠裏面——抽象工廠的方法經常以工廠方法的方式實現。
最後:當需要創建產品族和想讓製造的相關產品集合起來,可以考慮使用抽象工廠模式。