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