一、簡單工廠模式mysql
1.一、簡單工廠模式缺點:每增長一款汽車都須要修改工廠類。違背開閉原則sql
1.二、簡單工廠模式代碼數據庫
/** * 簡單工廠模式 */ public class CarFactory { public Car getCar(String type){ if(type.equals("benz")){ return new Benz(); }else if(type.equals("hummer")){ return new Hummer(); } return null; } }
二、工廠方法模式oracle
2.一、工廠方法模式特色:職責單一,只負責生產單一產品。ide
2.二、工廠方法模式優勢:避免簡單工廠模式的缺點。新增一款汽車只須要新建一家工廠便可。符合開閉原則spa
2.三、工廠方法模式代碼code
/* *工廠接口 */ public interface CarFactory { Car createCar(); } /** *寶馬工廠生產寶馬汽車 */ public class BMWFactory implements CarFactory { @Override public Car createCar() { return new BMWCar(); } }
三、抽象工廠模式blog
3.一、抽象工廠模式特色:工廠負責生產旗下多個產品(產品族)接口
3.二、抽象工廠模式代碼get
todo
四、工廠方法模式與抽象工廠模式區別
工廠方法模式:該工廠只生產單一產品。
抽象工廠模式:該工廠會生產多個產品(產品族),打比方:一個超級工廠裏面分小工廠,工廠1生產輪胎、工廠2生產方向盤、工廠3生產:底盤等等。
4.一、工廠方法模式代碼
/** *汽車接口 */ public interface Car { void driver(); } /** *悍馬汽車 */ public class Hummer implements Car { @Override public void driver() { return; } } /** * 汽車工廠接口 * 新增汽車工廠實現此接口便可 */ public interface CarFactory { Car createCar(); } /** * 悍馬工廠 */ public class HummerFactory implements CarFactory{ @Override public Car createCar(){ return new Hummer(); } }
4.二、抽象工廠模式代碼
/* *工廠生產;車胎、方向盤、底盤等汽車配置(一族產品) * 汽車工廠接口 * 新增汽車工廠實現此接口便可 */ public interface CarFactory { Tyre createTyre(); Wheel ceateWheel(); Chassis createChassis(); } /** * 奔馳工廠生產奔馳汽車配件(奔馳一系列產品) */ public class BenzFactory implements CarFactory { @Override public Tyre createTyre() { return new BenzTyre(); } @Override public Wheel ceateWheel() { return new BenzWheel(); } @Override public Chassis createChassis() { return new BenzChassis(); } } /** * 悍馬工廠生產悍馬汽車配件(悍馬一系列產品) */ public class HummerFactory implements CarFactory{ @Override public Tyre createTyre() { return new HummerTyre(); } @Override public Wheel ceateWheel() { return new HummerWheel(); } @Override public Chassis createChassis() { return new HummerChassis(); } }
五、抽象工廠模式什麼狀況下會用到?
5.一、抽象工廠模式會使用上:須要生產公司旗下的一系列產品(產品族)。同時其它公司旗下也會生產一樣一系列產品。只是兩個工廠生產出來品牌不同。
5.二、抽象工廠模式常見應用:oracle和mysql數據庫應用時,系統能夠會替換數據庫,這時候抽象工廠模式就派上用場了。