android經常使用設計模式之工廠方法模式

定義:工廠方法模式屬於建立型設計模式。定義一個用於建立對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。git

工廠方法模式結構圖:

工廠方法模式結構圖.jpg
在工廠方法模式中有以下角色:

  • Product: 抽象產品類
  • ConcreteProduct: 具體產品類,實現Product接口。
  • Factory: 抽象工廠類,該類返回一個Product類型的對象。
  • ConcreteFactory: 具體工廠類,返回ConcreteProduct實例。
demo&代碼
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 abstract class AbstractLivingDetectionFactory {
    public abstract <T extends AbstractLivingDetection> T createLivingDetection(Class<T> t);
}
複製代碼
public class LivingDetectionFactory extends AbstractLivingDetectionFactory {

    @Override
    public <T extends AbstractLivingDetection>T createLivingDetection(Class<T> t){
        try {
            return  t.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
}
複製代碼

#####使用場景github

  • 工廠類負責建立的對象比較少。
  • 客戶只需知道傳入工廠類的參數,而無須關心建立對象的邏輯。 優勢:
優勢
  • 使用戶根據參數得到對應的類實例,避免了直接實例化類,下降了耦合性。
  • 工廠方法模式不但包含簡單工廠的優勢,並且沒有違背開放封閉原則。

代碼已上傳github設計模式

相關文章
相關標籤/搜索