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

zyl409214686發表於2018-01-07

定義:工廠方法模式屬於建立型設計模式。定義一個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使一個類的例項化延遲到其子類。

工廠方法模式結構圖:

工廠方法模式結構圖.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

相關文章