Java与设计模式(02)--工厂方法模式
2013-01-28 23:36
281 查看
我们接着之前的简单工厂模式继续。
之前讨论过,如果不在使用中通过传入类名参数传入对象,我们在每新增一个类时,都需要修改一次produce()方法,所以我们说简单工厂方法的灵活性是不够的,不符合“开放——封闭”原则。
我们考虑一下,将工厂定义为接口,将创建工作放置到子类中,这样代码变为:
我们的实体类:
Car
Bus
Truck
CarFactory被定义为接口:
两个工厂实现:
测试类:
这种模式有一个好处就是:
如果我们创建一个新的Sedan类,为了能够创建Sedan对象:
我们能够看出来,工厂方法模式的好处是我们在添加新的类的时候,不需要像简单工厂模式的那样修改factory类,而是实现factory接口即可。也就是说我们在不修改现有代码的情况下扩展了我们模块的功能,这样我们能够在灵活性和健壮性上达到一个很好的平衡。
之前讨论过,如果不在使用中通过传入类名参数传入对象,我们在每新增一个类时,都需要修改一次produce()方法,所以我们说简单工厂方法的灵活性是不够的,不符合“开放——封闭”原则。
我们考虑一下,将工厂定义为接口,将创建工作放置到子类中,这样代码变为:
我们的实体类:
Car
public interface Car { public void go(); }
Bus
public class Bus implements Car { @Override public void go() { System.out.println("Bus is going..."); } }
Truck
public class Truck implements Car { @Override public void go() { System.out.println("Truck is going..."); } }我们的工厂类:
CarFactory被定义为接口:
public interface CarFactory { public Car produce(); }
两个工厂实现:
public class BusFactory implements CarFactory { @Override public Car produce() { return new Bus(); } }
public class TruckFactory implements CarFactory { @Override public Car produce() { return new Truck(); } }
测试类:
public class Test { public static void main(String[] args) { CarFactory factory = new BusFactory(); Car car = factory.produce(); car.go(); } }
这种模式有一个好处就是:
如果我们创建一个新的Sedan类,为了能够创建Sedan对象:
public class Sedan implements Car { @Override public void go() { System.out.println("Sedan is going..."); } }
public class SedanFactory implements CarFactory { @Override public Car produce() { return new Sedan(); } }
我们能够看出来,工厂方法模式的好处是我们在添加新的类的时候,不需要像简单工厂模式的那样修改factory类,而是实现factory接口即可。也就是说我们在不修改现有代码的情况下扩展了我们模块的功能,这样我们能够在灵活性和健壮性上达到一个很好的平衡。
相关文章推荐
- JAVA设计模式-02-工厂方法模式
- Java设计模式之工厂方法模式【Factory Method Pattern】
- java设计模式之工厂方法模式
- java 设计模式之工厂方法模式
- Java设计模式之“工厂方法模式”
- Java经典设计模式-创建型模式-工厂方法模式(Factory Method)
- <Java设计模式>—工厂方法模式
- java设计模式-工厂方法模式
- 设计模式java-02.工厂模式
- JAVA设计模式之 工厂方法模式【Factory Method Pattern】
- java设计模式学习笔记--工厂方法模式
- Java23种设计模式之-----工厂方法模式
- java中的设计模式(二)--工厂方法模式 反射机制
- Java23种设计模式案例:工厂方法模式(Factory Method)
- Java设计模式----工厂方法模式
- Java设计模式学习记录-简单工厂模式、工厂方法模式
- java23种设计模式-----简单工厂模式、工厂方法模式、抽象工厂模式的区别
- Java设计模式之工厂模式(简单工厂模式和工厂方法模式)
- 浅谈 java 设计模式--工厂方法模式(Factory Method pattern)