更新时间:2020-09-17 15:03:48 来源:极悦 浏览1326次
一.简单工厂模式
简单工厂模式就是把对类的创建初始化全都交给一个工厂来执行,而用户不需要去关心创建的过程是什么样的,只用告诉工厂我想要什么就行了。而这种方法的缺点也很明显,违背了设计模式的开闭原则,因为如果你要增加工厂可以初始化的类的时候,你必须对工厂进行改建
代码如下:
package com.long88.ad.test; interface Car { public void getCar(); }
package com.long88.ad.test; public class BMW implements Car{ @Override public void getCar() { System.out.printf("来一辆BMW!"); } }
package com.long88.ad.test; public class BYD implements Car { @Override public void getCar() { System.out.printf("来一辆BYD!"); } }
package com.long88.ad.test; public class CarFactor { public static Car carFactor(Class tClass){ if (tClass.getName().equals(BMW.class.getName())){ return new BMW(); } if (tClass.getName().equals(BYD.class.getName())){ return new BYD(); } return null; } }
package com.long88.ad.test; public class testFactory { public static void main(String[] args) { Car car = CarFactor.carFactor(BYD.class); car.getCar(); } }
结果如图:
二. 工厂方法模式
设计一个工厂的接口,你想要什么东西,就写个类继承于这个工厂,这样就不用修改什么,直接添加就行了。就相当于,我这个工厂是用来生汽车的,而要什么品牌的汽车具体分到了每个车间,如果新多了一种品牌的汽车,直接新增一个车间就行了。那么问题又来了,如果想要生产大炮怎么办?
代码如下:
package com.long88.ad.test; interface Car { public void getCar(); }
package com.long88.ad.test; public class BMW implements Car{ @Override public void getCar() { System.out.printf("来一辆BMW!"); } }
package com.long88.ad.test; public class BYD implements Car { @Override public void getCar() { System.out.printf("来一辆BYD!"); } }
//抽象工厂 interface CarFactory{ public Car getCarByFactory(); }
// BMW 具体工厂类 class BMWfactory implements CarFactory{ @Override public Car getCarByFactory() { return new BMW(); } }
// BYD 具体工厂类 class BYD factory implements CarFactory{ @Override public Car getCarByFactory() { return new BYD (); } }
public class TestFactory { public static void main(String[] args) { Car bmw= new BMWfactory().getCarByFactory(); bmw.getCar(); } }
以上就是对“Java工厂模式菜鸟教程,快学起来呀”的介绍,希望对大家有所帮助,还想学习更多关于Java的课程,可以关注极悦官网Java视频教程,免费下载学习。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习