工廠設計模式:爲了解耦合,把對象的建立者與對象的使用者分開。
生活中:批量生產產品
Java中:批量生產對象設計模式
分工:
把生產(建立)對象與使用對象分開了,解耦合ide
一、簡單工廠模式
優勢:代碼比較簡潔
缺點:若是增長新的產品類型,須要修改工廠類
違反了面向對象的一個開發原則:對擴展開放,對修改關閉
二、工廠方法模式設計
(1)爲了生產對象與使用對象分開
(2)若是增長新產品,就不須要修改原來的工廠類
優勢:遵循了增長新產品,不修改原來的類的原則,
缺點:類太多了對象
示例:簡單工廠模式開發
class SimpleFactory2{
public static Car getCar(String type){
if("BMW".equals(type)){
return new BMW();
}else if("BZ".equals(type)){
return new Benz();
}
return null;
}
}get
示例:工廠方法模式產品
interface Factory{
VehiCle getVehiCle ();
}io
class BMWFactory implements Factory{class
@Override
public Che getChe() {
return new BaoMa();
}
}
class BZFactory implements Factory{擴展
@Override
public Che getChe() {
return new BZ();
}
}
......
示例:使用反射,結合工廠方法模式與簡單工廠模式
class SimpleFactory{
public static Vehicle getVehicle(String className)throws Exception{
Class clazz = Class.forName(className);
Object obj = clazz.newInstance();
if(obj instance of Vehicle){
return (Vehicle) obj;
} return null; }}