工厂模式定义:提供创建对象的接口
假设我们有两个产品Bus,Car,此时我们需要为其建立两个工厂CarFactory和BusFactory,并通过某一方法返回各自生产的对象
首先抽象出一个交通类
Bus和Car各自的工厂
最后进行测试
假设我们有两个产品Bus,Car,此时我们需要为其建立两个工厂CarFactory和BusFactory,并通过某一方法返回各自生产的对象
package com.lamp.factory;
public class Bus implements Moveable{
public void run() {
System.out.println("bus is running");
}
}
package com.lamp.factory;
public class Car implements Moveable{
public void run() {
System.out.println("car is running");
}
}
package com.lamp.factory;
public interface Moveable {
public void run();
}
首先抽象出一个交通类
package com.lamp.factory;
public abstract class Vehicle {
public abstract Moveable create();
}
Bus和Car各自的工厂
package com.lamp.factory;
public class BusFactory extends Vehicle {
@Override
public Moveable create() {
return new Bus();
}
}
package com.lamp.factory;
public class CarFactory extends Vehicle {
@Override
public Moveable create() {
return new Car();
}
}
最后进行测试
package com.lamp.factory;
public class Test {
public static void main(String[] args) {
//Vehicle factory = new BusFactory();
Vehicle factory = new CarFactory();
/**
* 工厂模式的优点在于只要你新增一个产品,只需添加相应产品的工厂,当你需要更换产品时
* 只需将对应的工厂改变,其它地方不需再改变,当然如果你新增的产品很多,这样容易造成工厂的泛滥
* 这也是工厂模式的弊端
*/
Moveable m = factory.create();
m.run();
}
}