定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
<pre name="code" class="java">public class Engine {
}
public class Underpan {
}
public class Wheel {
}
public interface IFactory {
public ICar createCar();
}
public class Factory implements IFactory{
@Override
public ICar createCar() {
// TODO 自动生成的方法存根
Engine engine = new Engine();
Underpan underpan = new Underpan();
Wheel wheel = new Wheel();
ICar car = new Car(engine,underpan,wheel);
return car;
}
}
public interface ICar {
public void show();
}
public class Car implements ICar {
private Engine engine;
private Underpan underpan;
private Wheel wheel;
public Car(Engine engine,Underpan underpan,Wheel wheel){
this.engine = engine;
this.underpan = underpan;
this.wheel = wheel;
}
@Override
public void show() {
// TODO 自动生成的方法存根
System.out.println("Car...");
}
}
public class Client {
public static void main(String[] args) {
IFactory factory = new Factory();
ICar car = factory.createCar();
car.show();
}
}
4部分:
工厂接口
工厂实现
产品接口
产品实现
客户端直接由工厂类生产出车来,而不用关心engine、underpan和wheel的创建,降低了耦合度。
在需要生成复杂对象的地方都可以使用工厂方法模式;
把实例化产品的任务交给实现类完成,扩展性较好。