1.简介
工厂方法模式是又简单工厂模式衍生而成,完全实现了‘开-闭原则’。工厂方法模式将具体核心工厂进一步抽象,抽象核心工厂不再负责生产产品,只负责工厂子类必须实现的接口,子类工厂负责生产响应产品,每一类产品对应响应的子类工厂,每个具体工厂子类对应一个产品,添加一个产品只要添加相应的产品子类工厂即可实现功能。
2.结构
3.角色
抽象工厂角色:核心工厂,所有子工厂类都必须实现此接口,提供工厂生产方法给子类实现。(Factory)
具体工厂子类:工厂子类,抽象工厂的实现者,具体生产方法的实现者。(IronCupFactory、GlassCupFactory)
抽象产品角色:所有产品的超类。(Cup)
具体产品角色;具体产品,抽象产品的实现者。(IronCup、GlassCup)
4.示例
//抽象工厂角色
public interface Factory{
public Cup getCup();
}
//具体工厂类
public class IronCupFactory implements Factory{
public Cup getCup();
}
//具体工厂类
public class GlassCupFactory implements Factory{
public Cup getCup();
}
//抽象产品角色
public interface Cup{
public String say();
}
//具体产品
public class IronCup implements Cup{
public String say(){
return "I am IronCup";
}
}
//具体产品
public class GlassCup implements Cup{
public String say(){
return "I am GlassCup";
}
}
//clientpublic class Main{
public static void main(String[] args){
Cup c = null;
Factory factory = new IronFactory();
c = factory.getCup();
if(null!=c){
System.out.println(c.say());
}
factory = new GlassFactory();
c = factory.getCup();
if(null!=c){
System.out.println(c.say());
}
}
}