工厂方法是在简单工厂的基础上的进一步抽象,在简单工厂中,所有的对象都是通过一个工厂来创建,在工厂方法中,每个对象都有特定的工厂来创建。
抽象接口(车)
具体实现类(宝马和奔驰)
抽象工厂接口(汽车制造厂)
工厂的具体实现(奔驰车厂和宝马车厂)
测试类:
工厂方法的好处是减轻了汽车工厂的负载,具体实例都由特有的对象工厂来产生
抽象接口(车)
package com.yf.designpattern.factorymethod;
public interface Car {
public void drive();
}
具体实现类(宝马和奔驰)
package com.yf.designpattern.factorymethod;
public class BmwCar implements Car {
@Override
public void drive() {
System.out.println("This is a BMW!!!");
}
}
package com.yf.designpattern.factorymethod;
public class BenzCar implements Car {
@Override
public void drive() {
System.out.println("This is a Benz!!!");
}
}
抽象工厂接口(汽车制造厂)
package com.yf.designpattern.factorymethod;
public interface CarFactory {
public Car driver();
}
工厂的具体实现(奔驰车厂和宝马车厂)
package com.yf.designpattern.factorymethod;
//奔驰车厂只生产奔驰车
public class BenzCarFactory implements CarFactory {
@Override
public Car driver() {
// TODO Auto-generated method stub
return new BenzCar();
}
}
package com.yf.designpattern.factorymethod;
//宝马车厂只生产宝马车
public class BmwCarFactory implements CarFactory {
@Override
public Car driver() {
// TODO Auto-generated method stub
return new BmwCar();
}
}
测试类:
package com.yf.designpattern.factorymethod;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
CarFactory cf=new BmwCarFactory();
Car car=cf.driver();
car.drive();
}
}
工厂方法的好处是减轻了汽车工厂的负载,具体实例都由特有的对象工厂来产生