工廠設計模式:為了解耦合,把對象的創建者與對象的使用者分開。
生活中:批量生產產品
Java中:批量生產對象
分工:
把生產(創建)對象與使用對象分開了,解耦合
1、簡單工廠模式
優點:代碼比較簡潔
缺點:如果增加新的產品類型,需要修改工廠類
違反了面向對象的一個開發原則:對擴展開放,對修改關閉
2、工廠方法模式
(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;
}
}
示例:工廠方法模式
interface Factory{
VehiCle getVehiCle ();
}
class BMWFactory implements Factory{
@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;
}
}