摘要:缺點規(guī)定了所有可能被創(chuàng)建的產品集合,產品族中擴展新的產品困難,需要修改抽象工廠的接口。支持拓展增加產品抽象工廠用來生產不同產品族的全部產品。
抽象工廠
定義:
抽象工廠模式提供一個創(chuàng)建一系列相關或相互依賴對象的接口
無需指它們具體的類
類型:創(chuàng)建型
適用場景:
客戶端(應用層)不依賴于產品類實例如何被創(chuàng)建、實現(xiàn)等細節(jié)
強調一系列相關的產品對象(屬于同一產品)一起使用創(chuàng)建對象需要大量重復的代碼
提供一個產品類的庫,所有的產品以同樣的接口出現(xiàn),從而使客戶端不依賴于具體實現(xiàn)。
優(yōu)點:
具體產品在應用層代碼隔離,無需關心創(chuàng)建細節(jié)。
將一個系列的產品族統(tǒng)一到一起創(chuàng)建。
缺點:
規(guī)定了所有可能被創(chuàng)建的產品集合,產品族中擴展新的產品困難,需要修改抽象工廠的接口。
增加了系統(tǒng)的抽象性和理解難度。
產品等級結構和產品族 案例視頻教程=視頻+筆記
public abstract class Article { public abstract void produce(); }
public abstract class Video { public abstract void produce(); }
public class JavaArticle extends Article { @Override public void produce() { System.out.println("編寫Java課程手記"); } }
public class JavaVideo extends Video { @Override public void produce() { System.out.println("錄制Java課程視頻"); } }
public class PythonArticle extends Article { @Override public void produce() { System.out.println("編寫Python課程手記"); } }
public class PythonVideo extends Video { @Override public void produce() { System.out.println("錄制Python課程視頻"); } }
public interface CourseFactory { Video getVideo(); Article getArticle(); }
public class JavaCourseFactory implements CourseFactory { @Override public Video getVideo() { return new JavaVideo(); } @Override public Article getArticle() { return new JavaArticle(); } }
public class PythonCourseFactory implements CourseFactory { @Override public Video getVideo() { return new PythonVideo(); } @Override public Article getArticle() { return new PythonArticle(); } }
public class Test { public static void main(String[] args) { CourseFactory courseFactory = new JavaCourseFactory(); Video video = courseFactory.getVideo(); Article article = courseFactory.getArticle(); video.produce(); article.produce(); } }區(qū)別
簡單工廠 : 用來生產同一等級結構中的任意產品。(不支持拓展增加產品)
工廠方法 :用來生產同一等級結構中的固定產品。(支持拓展增加產品)
抽象工廠 :用來生產不同產品族的全部產品。(不支持拓展增加產品;支持增加產品族)
參考資料:https://www.cnblogs.com/qiaoc...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74960.html
摘要:基于工廠角色和產品角色的多態(tài)性設計是工廠方法模式的關鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因為所有的具體工廠類都具有同一抽象父類。工廠方法模式總結工廠方法模式是簡單工廠模式的進一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式 1.簡單工廠模式 簡單工廠模式:又稱為靜態(tài)工廠方法...
摘要:抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創(chuàng)建多個產品族中的產品對象。前邊的兩個都是直接生產實例的,開始以為抽象工廠也是但是后來發(fā)現(xiàn)抽象工廠更像是生產工廠,其實抽象工廠其實是實現(xiàn)子類繼承父類的方法。 創(chuàng)建型模式 創(chuàng)建型模式是對一個類的實例化過程進行了抽象,把對象的創(chuàng)建和對象的使用進行了分離 上一篇介紹了下單例模式,這一篇介紹一下工廠模式和抽象工廠模式,...
摘要:簡單工廠,工廠模式和抽象工廠。不要認為簡單工廠是用就覺得一無是處,也不要覺得抽象工廠比較高大上就到處套。 工廠模式,實際上也會根據(jù)業(yè)務情景不同會有不同的實現(xiàn)方式。一般分為3種。簡單工廠,工廠模式和抽象工廠。顧名思義,這三種從簡單到抽象,名稱越來越高大上,實現(xiàn)方式肯定是越來越復雜 結論1:三種工廠的實現(xiàn)越來越復雜 簡單工廠 public class Factory { // 定義...
摘要:反射提供給面向對象編程可以自省的能力,即反射。在簡單工廠模式中,根據(jù)傳遞的參數(shù)來返回不同的類的實例簡單工廠模式又稱為靜態(tài)工廠方法模式。也就是簡單工廠模式工廠工廠類。PHP高級特性-反射以及工廠設計模式的結合使用 [結合 Laravel-Admin 代碼實例講解]利用反射來實現(xiàn)工廠模式的生產而無需創(chuàng)建特定的工廠類本文地址http://janrs.com/?p=833轉載無需經過作者本人授權轉載...
摘要:源碼參考抽象工廠模式抽象工廠模式提供一個接口,用于創(chuàng)建相關或依賴對象的家族,而不需要指定具體類。工廠方法模式和抽象工廠模式如何選擇開始的時候,可以選擇工廠方法模式,因為他很簡單只需要繼承,并實現(xiàn)工廠方法即可。 問題:在上一篇 python設計模式:工廠方法模式我們嘗試使用工廠方法創(chuàng)建了披薩店,現(xiàn)在為了保證披薩加盟店也能有良好的聲譽,我們需要統(tǒng)一原材料,這個該如何做呢? 為了確保每家加盟...
閱讀 3045·2023-04-25 20:09
閱讀 3321·2021-11-23 09:51
閱讀 1976·2021-11-22 15:25
閱讀 3353·2021-11-18 10:02
閱讀 2756·2021-09-27 13:56
閱讀 1309·2019-08-30 15:44
閱讀 1153·2019-08-30 13:21
閱讀 3326·2019-08-30 11:05