設計模式筆記-簡單工廠模式
阿新 • • 發佈:2018-12-02
定義
簡單工廠模式又稱為靜態工廠模式,簡單工廠模式的作用就是建立一個工廠類用來建立其它類的例項,至於類是怎麼樣建立的對使用者來說是不可見的「遮蔽細節」
說明:
它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。
模式結構
簡單工廠模式包含如下角色:
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");
}
}
參考文件: