Java 設計模式之 簡單原廠模式(靜態Factory 方法模式)

來源:互聯網
上載者:User

標籤:

簡單原廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態Factory 方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責建立其他類的執行個體,被建立的執行個體通常都具有共同的父類(或者父介面)

簡單原廠模式的  UML 圖:

(1)抽象(Product)產品角色:簡單原廠模式所建立的所有對象的父類,注意,這裡的父類可以是介面也可以是抽象類別,它負責描述所有執行個體所共有的公用介面。

(2)具體產品(Concrete Product)角色:簡單工廠所建立的具體執行個體對象,這些具體的產品往往都擁有共同的父類。

(3)工廠角色(Creator):這是簡單原廠模式的核心,由它負責建立所有的類的內部邏輯。當然工廠類必須能夠被外界調用,建立所需要的產品對象。

代碼:

(1)抽象產品角色:

package com.liwei.factory.simple;/** * 抽象(Product)產品角色 * 負責描述所有執行個體的公用介面 * @author Administrator * */public interface Doll {    public void getInfo();}

(2)具體產品角色

package com.liwei.factory.simple;public class BarbieDoll implements Doll {    @Override    public void getInfo() {        System.out.println("我是芭比娃娃");    }}
package com.liwei.factory.simple;public class ClothDoll implements Doll {    @Override    public void getInfo() {        System.out.println("我是布娃娃");    }}

(3)工廠角色:

package com.liwei.factory.simple;public class DollFactory {    public static Doll getInstance(String name){        if("barbie".equals(name)){            return new BarbieDoll();        }else if("cloth".equals(name)){            return new ClothDoll();        }else{            return null;        }    }}

(4)測試類別:

package com.liwei.factory.simple;public class Client {    public static void main(String[] args) {        Doll doll1 = DollFactory.getInstance("cloth");        doll1.getInfo();        Doll doll2 = DollFactory.getInstance("barbie");        doll2.getInfo();    }}

由原來的直接依賴,變為依賴工廠了。只是把依賴關係轉移了。

 

Java 設計模式之 簡單原廠模式(靜態Factory 方法模式)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.