常用设计模式-工厂模式
1、简单工厂模式
1.1、简单工厂模式缺点:每增加一款汽车都需要修改工厂类。违背开闭原则
1.2、简单工厂模式代码
/** * 简单工厂模式 */ 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; } }
2、工厂方法模式
2.1、工厂方法模式特点:职责单一,只负责生产单一产品。
2.2、工厂方法模式优点:避免简单工厂模式的缺点。新增一款汽车只需要新建一家工厂即可。符合开闭原则
2.3、工厂方法模式代码
/* *工厂接口 */ public interface CarFactory { Car createCar(); } /** *宝马工厂生产宝马汽车 */ public class BMWFactory implements CarFactory { @Override public Car createCar() { return new BMWCar(); } }
3、抽象工厂模式
3.1、抽象工厂模式特点:工厂负责生产旗下多个产品(产品族)
3.2、抽象工厂模式代码
todo
4、工厂方法模式与抽象工厂模式区别
工厂方法模式:该工厂只生产单一产品。
抽象工厂模式:该工厂会生产多个产品(产品族),打比方:一个超级工厂里面分小工厂,工厂1生产轮胎、工厂2生产方向盘、工厂3生产:底盘等等。
4.1、工厂方法模式代码
/** *汽车接口 */ 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.2、抽象工厂模式代码
/* *工厂生产;车胎、方向盘、底盘等汽车配置(一族产品) * 汽车工厂接口 * 新增汽车工厂实现此接口即可 */ 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.1、抽象工厂模式会使用上:需要生产公司旗下的一系列产品(产品族)。同时其它公司旗下也会生产同样一系列产品。只是两个工厂生产出来品牌不一样。
5.2、抽象工厂模式常见应用:oracle和mysql数据库应用时,系统可以会替换数据库,这时候抽象工厂模式就派上用场了。
感谢您的阅读,您的支持是我写博客动力。