91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么實現工廠方法設計模式

發布時間:2021-12-23 09:32:01 來源:億速云 閱讀:122 作者:iii 欄目:網絡安全

這篇文章主要介紹“Java怎么實現工廠方法設計模式”,在日常操作中,相信很多人在Java怎么實現工廠方法設計模式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java怎么實現工廠方法設計模式”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

工廠方法模式使我們能夠在不將創建邏輯暴露給客戶端的情況下創建對象,并使用通用接口引用新創建的對象。它是最廣泛使用的創作模式之一。

此模式也稱為  虛擬構造函數

根據 Gamma等人的Design Patterns,這種模式的目的  是:

  • 定義用于創建對象的接口,但讓子類決定實例化哪個類。Factory方法允許類將實例化延遲到子類。

Factory方法用于創建對象。超類指定所有標準和通用行為,然后將創建詳細信息委托給客戶端提供的子類。

Factory方法使設計更具可定制性,而且更復雜一些。其他設計模式需要新類,而Factory只需要新操作。

結構體

工廠方法模式的結構如下圖所示:

Java怎么實現工廠方法設計模式

圖:工廠方法模式的結構

如今,static 類的  方法通常用作返回所需類類型的對象的工廠方法。與構造函數不同,它返回的實際對象可能是子類的實例,也可能重用現有對象,而不是創建新對象。

使用a factory 代替a的一個  優點  constructor 是  factory 方法可以具有不同的和更具描述性的名稱。

讓我們考慮一個根據客戶需求繪制不同幾何形狀的應用程序。應用程序的類圖如下所示:

Java怎么實現工廠方法設計模式

圖:工廠方法模式示例

所述  ShapeFactory 類具有靜態方法getShape(),它返回  GeometricShape 字符串名稱輸入的基礎上對象。

Java實現

我們已經介紹了上面討論的應用程序的Java實現。

讓我們首先為產品制作一個接口factory

/ **
 *產品界面
 * /
公共 界面 GeometricShape {
    void  draw();
}

以下是上述接口的實現:

/ **
 *混凝土產品
 * /
public  class  Line  實現 GeometricShape {
    @覆蓋
    public  void  draw(){
        系統。出。println(“Line Drawn。”);
    }
}
/ **
 *混凝土產品
 * /
public  class  Rectangle  實現 GeometricShape {
    @覆蓋
    public  void  draw(){
        系統。出。println(“繪制矩形。”);
    }
}
/ **
 *混凝土產品
 * /
public  class  Circle  實現 GeometricShape {
    @覆蓋
    public  void  draw(){
        系統。出。println(“繪制圓圈”。);
    }
}

我添加了以下枚舉來命名形狀:

public  enum  ShapeType {
    LINE,
    CIRCLE,
    RECTANGLE,
    三角形
}

現在,讓我們創建一個  factory 提供產品的產品(在本例中  GeometricShape):

/ **
 *混凝土產品
 * /
公共 抽象 類 ShapeFactory {
    public  static  GeometricShape  getShape(ShapeType  name){
        GeometricShape  shape  =  null ;
        開關(名字){
            案例 LINE:
                shape  =  new  Line();
                打破 ;
            案例 CIRCLE:
                shape  =  new  Circle();
                打破 ;
            案例 RECTANGLE:
                shape  =  new  Rectangle();
                打破 ;
        }
        回歸 形狀 ;
    }
}

應用程序的客戶端提供所需形狀的名稱,如下所示。

/ **
 *客戶
 * /
公共 類 申請 {
    public  static  void  main(String [] args){
        //請求圓形
        GeometricShape  circle  =  ShapeFactory。getShape(ShapeType。CIRCLE);
        if(circle  !=  null){
            圈子。draw();
        } else {
            系統。出。println(“此形狀無法繪制。”);
        }
        //請求不存在的形狀
        GeometricShape  triangle  =  ShapeFactory。getShape(ShapeType。三角);
        if(triangle  !=  null){
            三角形。draw();
        } else {
            系統。出。println(“此形狀無法繪制”);
        }
    }
}

該計劃的輸出是:

圈 被 繪制。
這個 形狀 可以“噸繪制

由于存在圓形,Circle 因此返回有效  對象。但是,沒有帶三角形的類,因此無法繪制形狀。

到此,關于“Java怎么實現工廠方法設計模式”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临夏市| 余姚市| 息烽县| 丰原市| 荣成市| 竹北市| 姜堰市| 淮阳县| 承德县| 广水市| 通州市| 双柏县| 宜君县| 盐池县| 军事| 天柱县| 伽师县| 翁源县| 霍邱县| 侯马市| 鹿泉市| 孝昌县| 深水埗区| 沁阳市| 宁强县| 枣强县| 德昌县| 阳曲县| 墨竹工卡县| 尖扎县| 巧家县| 石狮市| 泰安市| 且末县| 思茅市| 德惠市| 伊宁市| 天峻县| 澄城县| 平远县| 中西区|