亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

巫溪县| 柯坪县| 陇川县| 大埔县| 苍梧县| 桐城市| 汝南县| 时尚| 南郑县| 九江县| 蓬莱市| 和田市| 德阳市| 翼城县| 荆门市| 黑山县| 金昌市| 宁国市| 张掖市| 巩义市| 上蔡县| 贵港市| 阆中市| 集贤县| 怀化市| 什邡市| 清涧县| 柯坪县| 左云县| 河西区| 洛浦县| 宁乡县| 威信县| 浦城县| 新和县| 茂名市| 双鸭山市| 炎陵县| 明水县| 贵阳市| 石首市|