黑马程序员技术交流社区
标题: 【武汉校区】讲师分享:简单工厂模式 [打印本页]
作者: 武汉分校-小舞 时间: 2016-3-25 16:56
标题: 【武汉校区】讲师分享:简单工厂模式
本帖最后由 武汉分校-小舞 于 2016-3-25 17:04 编辑
【武汉校区】讲师分享:简单工厂模式
1、 为什么要使用简单工厂模式
案例:Person做不同的交通工具回家
接口TrafficTool
publicinterface TrafficTool {
publicvoid run();
}
实现类Car
public class Car implements TrafficTool {
public void run() {
System.out.println("轿车正在行驶...");
}
}
实现类Bus
public class Bus implements TrafficTool {
public void run() {
System.out.println("公交车正在行驶...");
}
}
类Person
public class Person {
public void goHome(TrafficTool tool){
tool.run();
}
}
测试类Test
public class Test {
public static void main(String[] args) {
Person person=new Person();
//构建交通对象
TrafficTool tool=new Car();
person.goHome(tool);
}
}
上述的问题:
交通工具的构建不应该是客户端自己构建,而应该有生产交通工具的工厂进行统一创建。
这就好像我们的穿的鞋是鞋厂统一生产,而不是自己编织的
所用要上面的程序要使用简单工厂模式进行改进
2、什么是工厂类
创建功能一定要明确工厂的功能是创建对象的
1) 工厂的类名TafficToolFactroy(生产什么就叫XXXFactroy)
2) 工厂的类中创建对象的方法
public static TrafficTool createTrafficTool(String type){
return null;
}
方法的解释
static:使用静态的好处是可以使用类名直接调用,一般工厂类中的方法都给静态的
参数type:代表根据不同的需求生产不同的对象。 比如type="car"代表要生产轿车,type="bus"代表要公共汽车轿车
返回值TrafficTool:根据不同的需求会创建不同的交通工具,所以使用父类接收返回值才比较合适
3、 方法的具体实现
public static TrafficTool createTrafficTool(String type){
TrafficTool tool=null;//声明一个父类对象
//根据参数判断有生产什么对象
if ("car".equals(type)) {
tool=new Car();
}else if ("bus".equals(type)) {
tool=new Bus();
}
return tool;
}
4、测试类的改进
public class Test {
public static void main(String[] args) {
Person person=new Person();
//构建交通对象
//TrafficTool tool=new Car();
//使用工厂创建对象
TrafficTool tool
=TafficToolFactroy.createTrafficTool("car");
person.goHome(tool);
}
}
5、简单工厂模式的缺点:
单工厂模式把生产对象的功能放在一个实类上,如果是在添加一个交通功能的对象,必然会导致工厂类的修改。所有后期可以使用工厂方法模式进行改进
想获取最新传智播客武汉中心分享技术文章请加QQ 1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!
推荐阅读:
作者: liang1995918 时间: 2016-3-26 09:26
这世界上本没有乌龟或兔子,说的人多了,也才有了乌龟或兔子。我们都跋山涉水,风尘仆仆地向前奔跑,不是为了证明我们到底是不是兔子,是因为我们相信, 跑着跑着,我们就变成了别人眼中的兔子。
作者: 公孙国禄 时间: 2016-3-26 10:49
看了很久没有看的太懂 还是以后努力吧
作者: 武汉分校-小舞 时间: 2016-3-28 16:20
世界上本没有路,走的人多了就变成了路
作者: 武汉分校-小舞 时间: 2016-3-28 16:21
作者: liang1995918 时间: 2016-3-28 23:17
天生就是兔子或者天生就是乌龟的人,就算有,也是少数。
更多的时候,兔子之所以是兔子,就是因为他跑了。
而乌龟没跑,所以以为自己是乌龟。
作者: xiaoyimiao 时间: 2016-3-28 23:26
真牛点个赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |