android常用設計模式之簡單工廠模式

zyl409214686發表於2018-01-09

定義:簡單工廠模式屬於建立型模式,其又被稱為工廠方法模式,這是由一個工廠物件決定建立出哪一種產品型的例項。

簡單工廠模式類圖:

簡單工廠模式類圖.jpg

在簡單工廠模式中有如下角色:

  • Factory: 工廠類,這是簡單工廠模式的核心,負責實現建立例項內部的邏輯。
  • IProduct:抽象產品類,這是簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所工有的公共介面。
  • Product: 具體產品類,這是簡單工廠類的建立目標。
DEMO&程式碼

場景: 最近公司在接入了兩款活體檢測sdk,而且後續還會接入其他的活體檢測sdk。程式碼如下:

public abstract class AbstractLivingDetection {
    /**
     * 開始檢測
     */
  public abstract void startDetection();
}
複製程式碼
public class HaiXinLivingDetection extends AbstractLivingDetection {
    @Override
    public void startDetection() {
        System.out.println("開啟海鑫活體檢測");
    }
}
複製程式碼
public class TongFuDunLivingDetection extends AbstractLivingDetection {
    @Override
    public void startDetection() {
        System.out.println("開啟通付盾活體檢測");
    }
}
複製程式碼
public class LivingDetectionFactory {
    public static AbstractLivingDetection createLivingDetection(String type){
        AbstractLivingDetection livingDetection = null;
        switch (type){
            case "tongfudun":
                livingDetection = new TongFuDunLivingDetection();
                break;
            case "haixin":
                livingDetection = new HaiXinLivingDetection();
                break;
            default:
                break;
        }
        return  livingDetection;
    }
}
複製程式碼
使用場景
  • 工廠類負責建立的物件比較少。
  • 客戶只需知道傳入工廠類的引數,而無須關心建立物件的邏輯。
優點:
  • 使使用者根據引數獲得對應的類例項,避免了直接例項化類,降低了耦合性。
缺點:
  • 可例項化的型別在編譯期間已經確定。如果增加新型別,則需要修改工廠,這違背了開放封閉原則。簡單工廠需要知道所有要生成的型別,其當子類過多或者子類層次過多時不適合使用。

程式碼已上傳github

相關文章