package com.bjsxt.cn.factorymethod;
public class Audi implements Car {
@Override
public void run() {
System.out.println("奥迪在跑");
}
}
package com.bjsxt.cn.factorymethod;
public class AudiFactory implements CarFactory {
@Override
public Car createCar() {
return new Audi();
}
}
package com.bjsxt.cn.factorymethod;
public class Byd implements Car {
@Override
public void run() {
System.out.println("比亚迪在跑");
}
}
package com.bjsxt.cn.factorymethod;
public class BydFactory implements CarFactory {
@Override
public Car createCar() {
return new Byd();
}
}
package com.bjsxt.cn.factorymethod;
public interface Car {
public void run();
}
package com.bjsxt.cn.factorymethod;
public interface CarFactory {
public Car createCar();
}
/**
* 时间:2015年3月29日10:16:30
* 源程序的作用:测试工厂方法模式
* 这种工厂方法模式中的特点如下:
* 在该模式组织中,具有很多的工厂类。(当然他们可以有一个工厂的接口,通过这个接口组织每个工厂类的功能)
* 我们要在这中组织中增加新的类,比如说benchi,我们的做法如下,先在包中增加类型Benchi,然后相应的增加相应类型的
* 工厂,(BenchiFactory 一般来讲也要实现相应的工厂接口)。因此,这种组织结构使得我们不必修改已有类型,而只需要扩展(
* 增加一对类来完成增添相应的类型)换句话讲,这是符合OCP原则的。(也就是开闭原则。)
*
*/
package com.bjsxt.cn.factorymethod;
public class Client {
public static void main(String[] args) {
Car c1 = new AudiFactory().createCar();
c1.run();
new BydFactory().createCar().run();
}
}