1. 程式人生 > >設計模式筆記-簡單工廠模式

設計模式筆記-簡單工廠模式

定義

簡單工廠模式又稱為靜態工廠模式,簡單工廠模式的作用就是建立一個工廠類用來建立其它類的例項,至於類是怎麼樣建立的對使用者來說是不可見的「遮蔽細節」

說明:

它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。

 

模式結構
簡單工廠模式包含如下角色:
Factory:工廠角色
Product:抽象產品角色
ConcreteProduct:具體產品角色a

 

簡單工廠模式的優點

1實現建立和使用分離;

2 客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數

簡單工廠模式的缺點:

簡單工廠模式的缺點

1工廠靜態方法無法繼承

2 違反開閉原則「對擴充套件開放,對修改關閉」,如果有一個新的物件要新增,那麼就要修改工廠

3 程式碼維護不容易,如果想要建立更多的具體實現的物件,需要大量修改工廠

 

簡單工廠模式適用情況包括:工廠類負責建立的物件比較少;客戶端只知道傳入工廠類的引數,對於如何建立物件不關心。

程式碼實現:

1 抽象類

//定義抽象產品果汁介面 IJuice.java
public interface IJuice {
    String getName() ;
    //也可以宣告一些其它的業務方法
}

2 實現類

//一個具體的產品--- 蘋果汁
public class AppleJuice implements IJuice {

    public static final String TAG = "AppleJuice" ;

    @Override
    public String getName() {
        Log.e(TAG,"我是蘋果汁") ;
        return "我是蘋果汁";
    }
}

3 實現類

//具體的產品桔子汁
public class OrangeJuice implements IJuice {

    public static final String TAG = "OrangeJuice" ;

    @Override
    public String getName() {
        Log.e(TAG,"我是桔子汁") ;
        return "我是桔子汁";
    }
}

4 工廠類


/**
 * @Description  果汁機---工廠
 * @Creator junjun(建立者)
 */
public class JuiceFactory {

    /**
     * 根據名稱來生產不同的果汁
     * @param name
     * @return
     */
    public static IJuice createJuice(String name){
        IJuice iJuice = null;
        if(name.equals("apple")){
            //蘋果汁
            iJuice = new AppleJuice() ;
        }else if(name.equals("orange")){
            //桔子汁
            iJuice = new OrangeJuice() ;
        }

        return iJuice ;
    }
}

5客戶端 

public class FactoryTest {  
  
    public static void main(String[] args) {  
        JuiceFactory factory = new JuiceFactory();  
        sender = factory.createJuice("apple");  
    }  
}  

參考文件:

https://segmentfault.com/a/1190000011900365