模式介绍:避免手动去New多个对象,根据产品类型或者其他参数生产一系列具有相同接口的对象实例。
适用场景:生产相同接口不同系列产品,获取同一类型多个不同实例。
类图:
代码:
public class FactoryMethod_1 {
/**
* 生产系列产品
*/
public static void main(String[] args) {
Car benz = Factory.create(Benz.class);
Car ford = Factory.create(Ford.class);
benz.run();
benz.stop();
ford.run();
ford.stop();
}
}
class Factory{
public static Car create(Class<?> clazz){
Car car = null;
try {
car = (Car) clazz.newInstance();
} catch (Exception e) {
System.out.println("Can not create " + clazz.getName());
}
return car;
}
}
interface Car{
void run();
void stop();
}
class Benz implements Car{
@Override
public void run() {
System.out.println("Benz Is Run...");
}
@Override
public void stop() {
System.out.println("Benz Is Stop...");
}
}
class Ford implements Car{
@Override
public void run() {
System.out.println("Ford Is Run...");
}
@Override
public void stop() {
System.out.println("Ford Is Stop...");
}
}