A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 武汉分校-小舞 于 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!

6 个回复

倒序浏览
这世界上本没有乌龟或兔子,说的人多了,也才有了乌龟或兔子。我们都跋山涉水,风尘仆仆地向前奔跑,不是为了证明我们到底是不是兔子,是因为我们相信, 跑着跑着,我们就变成了别人眼中的兔子。
回复 使用道具 举报
看了很久没有看的太懂 还是以后努力吧
回复 使用道具 举报
liang1995918 发表于 2016-3-26 09:26
这世界上本没有乌龟或兔子,说的人多了,也才有了乌龟或兔子。我们都跋山涉水,风尘仆仆地向前奔跑,不是为 ...

世界上本没有路,走的人多了就变成了路
回复 使用道具 举报
公孙国禄 发表于 2016-3-26 10:49
看了很久没有看的太懂 还是以后努力吧

回复 使用道具 举报
天生就是兔子或者天生就是乌龟的人,就算有,也是少数。
        更多的时候,兔子之所以是兔子,就是因为他跑了。
        而乌龟没跑,所以以为自己是乌龟。
回复 使用道具 举报
真牛点个赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马