一個簡單的工廠模式

工廠模式簡單的JAVA實例:


一個工廠生產手機:

首先定義一個手機公共接口:

//所有手機的公共接口
interface MobilePhone{
    //獲取手機信息
    String getPhoneInfo();
    //打電話
    void makePhoneCalls();
    //發短信
    void sendShortMessage();
}

然後定義幾中不同手機的具體類:

class IPhone7 implements MobilePhone{
    @Override
    public String getPhoneInfo() {
        return "I am an Iphone7.";
    }
    @Override
    public void makePhoneCalls() {
        //...
    }
    @Override
    public void sendShortMessage() {
        //...
    }
}

class IPhone7s implements MobilePhone{
    @Override
    public String getPhoneInfo() {
        return "I am an Iphone7s.";
    }
    @Override
    public void makePhoneCalls() {
        //...
    }
    @Override
    public void sendShortMessage() {
        //...
    }
}

最後給出工廠類:

/**
 * 工廠類
 * 手機生產廠
 */
public class Foxconn {
    public MobilePhone producePhone(String phoneType) throws Exception{
        if(phoneType.equals("7"))
            return new IPhone7();
        else if(phoneType.equals("7s"))
            return new IPhone7s();
        else
            throw new Exception();//指令不識別
    }
}

工廠模式的優缺點:

優點:使用工廠模式創建具體實例時,創建方法可以更有描述性,比單純的使用構造函數易於理解。並且滿足java的封裝要求,明確職責,整體結構優化。

缺點:違反了高內聚原則,所有類的創建邏輯都在一個方法裏。需要添加新的產品時不能直接實現生產新產品的邏輯,必須修改工廠類,添加IF判斷,重新編譯,違反了“開閉原則”。工廠方法模式解決了這個問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章