設計模式 — 簡單工廠模式

一點點

  • 工廠模式是我們最爲常用的設計模式之一,目的是用於隱藏創建對象的細節

  • 工廠模式的核心是: 工廠類(Factory)。工廠類作爲中間人的角色幫我們創建對象。通俗點說:我們要獲取對象時,不是通過自己new出來的,而是通過工廠類來幫我們創建的。

  • 工廠模式可以細分爲:簡單工廠、工廠方法 和 抽象工廠



簡單工廠模式案例:

  • 1. 抽象出一個頂級的接口I18N (作爲工廠類的返回對象使用)

  • 2. 創建3個實現類ChineseBritainJapanese,並實現I18N接口

  • 3. 創建I18NFactory工廠類,並提供一個靜態方法來創建實現類對象,該靜態方法會返回一個I18N具體實現類的對象。

  • 4. 然後使用者就可以直接面向工廠類進行開發咯

cd4356

步驟 1

創建一個接口:

package com.cd.design.factory;

/**
 * @Author: 落葉無痕
 * @Date: 2020/4/21 1:19
 */
public interface I18N {

    //抽象出來的最頂級的方法
    String getLanguage();

}

步驟 2

創建實現接口的實體類

public class Chinese implements I18N {

    @Override
    public String getLanguage() {
        return "中文. . .";
    }

}
public class Britain implements I18N {

    @Override
    public String getLanguage() {
        return "英語. . .";
    }

}
public class Japanese implements I18N {

    @Override
    public String getLanguage() {
        return "日語. . .";
    }

}

步驟 3

創建一個工廠,根據傳遞的實現類類型信息創建實現類對象。

public class I18NFactory {

    /* 根據傳遞的實現類類型信息創建實現類對象
     *這裏使用static修飾,這樣就可以直接類名.方法名調用該方法。即可以簡化開發,又節省了創建對象帶來的消耗。
    */
    public static I18N getI18NObject(String area){
        if(area.equals("Chinese")){
            return new Chinese();
        }else if(area.equals("Britain")){
            return new Britain();
        }else if(area.equals("Chinese")){
            return new Japanese();
        }else {
            return null;
        }
    }

}

步驟 4

使用該工廠,通過傳遞類型獲取指定指定實現類對象。

package com.cd.design.factory;

/**
 * @Author: 落葉無痕
 * @Date: 2020/4/21 1:18
 */
public class Software {

    public static void main(String[] args) {
    	//更改getI18NObject()方法的參數值,獲得不同類的對象
        I18N i18N = I18NFactory.getI18NObject("Chinese"); 
        System.out.println(i18N.getLanguage());
    }

}

簡單工廠總結:

  • 何時使用:明確地計劃在不同條件下創建不同實例時(要創建實例的類所實現的功能都大致相同)

  • 優點:1. 使用者想創建一個類,只需知道其名稱即可。2.屏蔽了類的對象的創建邏輯和具體實現,使用者只需關心實現接口。

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