1譬正、工廠模式的定義
定義一個創(chuàng)建對象的接口(工廠接口)业踏,由其子類(工廠類)決定初始化哪個類(產(chǎn)品類)
換句話說,根據(jù)要求生成指定對象
2植阴、工廠模式的實現(xiàn)要點(diǎn)
定義一個工廠類的接口蟹瘾,工廠子類實現(xiàn)該接口,并根據(jù)入?yún)Q定實例化哪個產(chǎn)品類
可以借助反射或條件判斷來實現(xiàn)這種決定
3掠手、應(yīng)用場景
減少代碼中類的耦合
系統(tǒng)中可能會擴(kuò)展出多種同類型的類憾朴,比如不同數(shù)據(jù)庫有不同的連接驅(qū)動
4、實現(xiàn)舉例
抽象產(chǎn)品類-引擎
public abstract class EngineProduct {
public abstract void provideMotivation();
}
具體產(chǎn)品類-BMW引擎
public class BMWEngineProduct extends EngineProduct {
@Override
public void provideMotivation(){
System.out.println("provide motivation for BMW car!");
}
}
具體產(chǎn)品類-奔馳引擎
public class BenzEngineProduct extends EngineProduct {
@Override
public void provideMotivation(){
System.out.println("provide motivation for Benz car!");
}
}
抽象工廠類
public abstract class AbstractFactory {
abstract <T extends EngineProduct> T getInstance(Class<T> cls);
}
具體工廠類(通過反射實現(xiàn))
public class CommonFactory extends AbstractFactory {
public <T extends EngineProduct> T getInstance(Class<T> cls) {
EngineProduct product = null;
try {
product = cls.newInstance();
} catch (Exception e) {
System.out.println("produce product failed!");
}
return (T)product;
}
}