标签:
工厂方法模式是简单工厂模式的进一步抽象和推广。工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。
在该模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做。核心工厂类变成了一个抽象工厂角色,这种进一步的抽象允许系统在不修改具体工厂角色的情况下引进新的产品。
工厂方法模式的一个示意性系统中几个角色:
以下是该示意性系统的源代码:
/*
* 抽象工厂角色的源代码
* */
public interface Creator {
/*
* 工厂方法
* */
public Product factory();
}
/*
* 抽象产品角色的源代码
* */
public interface Product {}
/*
* 具体工厂方法1
* */
public class ConcreteCreator1 implements Creator{
/**
* 工厂方法
*/
public Product factory(){
return new ConcreteProduct1();
}
}
/*
* 具体产品1
* */
public class ConcreteProduct1 implements Product{
public ConcreteProduct1(){
System.out.println("get product1");
}
}
/*
* 具体工厂类2源代码
* */
public class ConcreteCreator2 implements Creator{
/*
* 工厂方法
* */
public Product factory() {
// TODO Auto-generated method stub
return new ConcreteProduct2();
}
}
/*
* 具体产品2
* */
public class ConcreteProduct2 implements Product {
public ConcreteProduct2(){
System.out.println("get product2");
}
}
/*
* 客户端代码
* */
public class client {
public static void main(String[] args) {
Creator creator1=new ConcreteCreator1();
Product product1=creator1.factory();
Creator creator2=new ConcreteCreator2();
Product product2=creator2.factory();
}
}
如果系统需要添加一个新的产品,需要向系统中加入一个具体的产品类以及它对应的工厂类。没有必要修改客户端,也没有必要修改抽象工厂角色或者其他已有的具体工厂角色。
标签:
原文地址:http://www.cnblogs.com/xtsylc/p/4702625.html