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