定義:工廠方法模式屬於建立型設計模式。定義一個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使一個類的例項化延遲到其子類。
工廠方法模式結構圖:
在工廠方法模式中有如下角色:- 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