针对问题:当要创建的产品种类很多,并且会随着时间的推移会不断改变时。可以将这些变化的部分抽离出来作为一个继承结构,运用多态的动态性来替换本来的改变。
工厂方法模式结构图:
工厂方法实现代码:
/**
* 产品接口
* @author bruce
*
*/
public abstract class Product {
public abstract void description();
}
/**
* 创建者接口
* @author bruce
*
*/
public abstract class Creator {
public abstract Product create();
}
/**
* 产品1
* @author bruce
*
*/
public class ConcreteProduct1 extends Product{
@Override
public void description() {
System.out.println("产品1");
}
}
/**
* 产品2
* @author bruce
*
*/
public class ConcreteProduct2 extends Product{
@Override
public void description() {
// TODO Auto-generated method stub
System.out.println("产品2");
}
}
/**
* 创建类1
* @author bruce
*
*/
public class ConcreteCreator1 extends Creator{
@Override
public Product create() {
// TODO Auto-generated method stub
return new ConcreteProduct1();
}
}
/**
* 创建类2
* @author bruce
*
*/
public class ConcreteCreator2 extends Creator{
@Override
public Product create() {
// TODO Auto-generated method stub
return new ConcreteProduct2();
}
}
/**
* 测试
* @author bruce
*/
public class Client {
public static void main(String[] args) {
Creator creator=new ConcreteCreator1();
Product product=creator.create();
product.description();//产品1
creator=new ConcreteCreator2();
product=creator.create();
product.description();//产品2
}
}