工廠設(shè)計模式:為了解耦合,把對象的創(chuàng)建者與對象的使用者分開。 生活中:批量生產(chǎn)產(chǎn)品 Java中:批量生產(chǎn)對象
分工: 把生產(chǎn)(創(chuàng)建)對象與使用對象分開了,解耦合
1、簡單工廠模式 優(yōu)點:代碼比較簡潔 缺點:如果增加新的產(chǎn)品類型,需要修改工廠類 違反了面向?qū)ο蟮囊粋€開發(fā)原則:對擴展開放,對修改關(guān)閉
2、工廠方法模式
?。?)為了生產(chǎn)對象與使用對象分開 (2)如果增加新產(chǎn)品,就不需要修改原來的工廠類 優(yōu)點:遵循了增加新產(chǎn)品,不修改原來的類的原則, 缺點:類太多了
示例:簡單工廠模式
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(); } }
......
示例:使用反射,結(jié)合工廠方法模式與簡單工廠模式
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; } }
|