工厂方法模式是在简单工厂模式的基础之上将创建具体产品类的工厂进一步抽象,使产品的创建不依赖具体的工厂,只需要依赖抽象工厂,后续如果要添加新的产品和工厂,只需要实现该抽象工厂的接口即可。
创建抽象工厂和产品
public interface ProductFactory {
public Product factory();
}
public interface Product {
public void eat();
public void run();
}
创建产品类ProductA和ProductB
public class ProductA implements Product{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("ProductA eat");
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("ProductA run");
}
}
public class ProductB implements Product{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("ProductB eat");
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("ProductB run");
}
}
创建具体工厂类
public class ProductAFactory implements ProductFactory{
@Override
public Product factory() {
// TODO Auto-generated method stub
return new ProductA();
}
}
public class ProductBFactory implements ProductFactory{
@Override
public Product factory() {
// TODO Auto-generated method stub
return new ProductB();
}
}
创建测试类
public class Test {
public static void main(String[] args) {
ProductFactory prof = new ProductAFactory();
Product pa = prof.factory();
pa.eat();
pa.run();
ProductFactory prof1 = new ProductBFactory();
Product pb = prof1.factory();
pb.eat();
pb.run();
}
}