<option id="mwy0y"><strong id="mwy0y"></strong></option>
  • <ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <ul id="mwy0y"></ul>
  • <del id="mwy0y"><dfn id="mwy0y"></dfn></del><ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <abbr id="mwy0y"></abbr>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:長沙千鋒IT培訓  >  技術干貨  >  簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?

    簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?

    來源:千鋒教育
    發布人:xqq
    時間: 2023-10-13 21:42:32

    一、簡單工廠模式、工廠方法模式和抽象工廠模式的區別

    簡單工廠模式

    簡單工模式時類的創建模式,又叫做靜態工廠方法(static Factory Method)。簡單工廠模式是一個工廠對象決定創建出哪一種產品類的實例。它存在的目的很簡單:定義一個創建對象的接口。
    組成:

    工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯。在java中它往往由一個具體類實現。

    抽象產品角色:它一般是具體產品繼承的父類或者實現的接口。在java中由接口或者抽象類來實現。

    具體產品角色:工廠類所創建的對象就是此角色的實例。在java中由一個具體類實現。

    工廠方法模式

    是簡單工廠模式的進一步抽象化和推廣,工廠方法模式里不再只由一個工廠類決定那一個產品類應當被實例化,這個決定被交給抽象工廠的子類去做。

    來看下它的組成:

    抽象工廠角色: 這是工廠方法模式的核心,它與應用程序無關。是具體工廠角色必須實現的接口或者必須繼承的父類。在java中它由抽象類或者接口來實現。

    具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程序調用以創建對應的具體產品的對象。

    抽象產品角色:它是具體產品繼承的父類或者是實現的接口。在java中一般有抽象類或者接口來實現。

    具體產品角色:具體工廠角色所創建的對象就是此角色的實例。在java中由具體的類來實現。

    抽象工廠模式

    在抽象工廠模式中,抽象產品 (AbstractProduct) 可能是一個或多個,從而構成一個或多個產品族(Product Family)。 在只有一個產品族的情況下,抽象工廠模式實際上退化到工廠方法模式。

    工廠方法模式 VS 抽象工廠模式

    工廠方法模式:一個抽象產品類,可以派生出多個具體產品類。每個具體工廠類只能創建一個具體產品類的實例。

    抽象工廠模式:多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。一個抽象工廠類可以派生出多個具體工廠類。每個具體工廠類可以創建多個具體產品的實例。

    區別:工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。工廠方法模式的具體工廠類只能創建一個具體產品類的實例,而抽象工廠模式可以創建多個。

    延伸閱讀:

    二、抽象工廠優缺點

    抽象工廠的優點:抽象工廠模式除了具有工廠方法模式的優點外,最主要的優點就是可以在類的內部對產品族進行約束。所謂的產品族,一般或多或少的都存在一定的關聯,抽象工廠模式就可以在類內部對產品族的關聯關系進行定義和描述,而不必專門引入一個新的類來進行管理。

    ?抽象工廠的缺點:產品族的擴展將是一件十分費力的事情,假如產品族中需要增加一個新的產品,則幾乎所有的工廠類都需要進行修改。所以使用抽象工廠模式時,對產品等級結構的劃分是非常重要的。

    以上就是關于簡單工廠模式、工廠方法模式和抽象工廠模式有何區別的內容希望對大家有幫助。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    怎么自定義Visual Studio代碼折疊識別的區域?

    2023-10-13

    hcip和hcnp有什么區別?

    2023-10-13

    layui和vue的區別?

    2023-10-13

    最新文章NEW

    cs和bs區別?

    2023-10-13

    DOF和HP有什么區別?

    2023-10-13

    hold和host的區別?

    2023-10-13

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>