安卓設計模式-簡單工廠模式
是什么
簡單工廠模式又稱為靜態方法模式(因為工廠類中定義了一個靜態方法),簡單工廠模式可以理解為負責生產對象的一個類,稱為工廠類。
有什么
- 抽象產品類
- 具體產品類(A產品、B產品)
- 具體工廠類
怎么做
- 定義一個抽象產品類
public abstract class Product(){
public abstract void show();
}
- 定義具體產品類繼承Product
public class AProduct extends Product{
public void show(){
System.out.print("我是產品A");
}
}
public class BProduct extends Product{
public void show(){
System.out.print("我是產品B");
}
}
- 創建工廠類創建具體的產品
public class Factory{
public static Product create(String productName){
Product p=null;
swich(productName){
case "A"
p=new AProduct();
break;
case "B"
p=new BProduct();
break;
}
return p;
}
}
- 演示
public void test() {
Factory.create("A").show();//生產ProductA
Factory.create("B").show();//生產ProductB
try {
Factory.create("C").show();//生產ProductC
} catch (NullPointerException e) {
System.out.println("沒有ProductC");//沒有ProductC,會報錯
}
}
什么時候用
- 生成復雜對象是確定只有一個工廠類可以使用簡單工廠類
優缺點
優點:
(1)代碼解耦,創建實例的工作和使用實例的工作分開,使用者不必關系對象如何創建
缺點:
(1)違背開放封閉原則,若需要添加新產品則必須修改工廠類
簡單工廠類優化
簡單工廠類新增產品時需要直接修改工廠類違反了開發封閉原則,因此可以通過反射來創建實例對像,確保能夠遵循開放封閉原則
public class Factory{
public static <T extends Product> create(Class<T> cls){
Product p=null;
p=(Product)Class.forName(cls.getClassName).newInstance();
return (Product)p;
}
}