工厂方法模式有一个问题:类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以从设计角度考虑会有一定的问题,这就要用到抽象工厂模式。它提供一个创建一系列相关或相互依赖对象的接口,而不需指定它们具体的类,这样一旦需要增加新的功能,直接增加新的工厂类即可,不需要修改之前的代码,如图10-4所示。
图10-4 抽象工厂模式示例
首先,创建接口:
public interface Payer{
public void pay();
}
其次,创建两个实现类:
public class CashPayer implements Payer{
@Override
public void Pay(){
System.out.println("this is Cash Payer!");
}
}
public class CreditCardPayer implements Payer{
@Override
public void Pay(){
System.out.println("this is CreditCard Payer!");
}
}
接着,创建两个工厂类:
public class CashPayFactory implements Provider{
@Override
public Payer produce(){
return new CashPayer();(www.xing528.com)
}
}
public class CreditCardPayFactory implements Provider{
@Override
public Payer produce(){
return new CreditCardPayer();
}
}
最后,再创建一个接口:
public interface Provider{
public Sender produce();
}
测试:
public class Test{
public static void main(String[]args){
Provider provider=new CashPayFactory();
Payer Payer=provider.produce();
Payer.pay();
}
}
输出:
this is CashPayer!
这个模式的好处就是,如果想增加一个功能,则只需创建一个实现类,实现Payer接口,同时创建一个工厂类,实现Provider接口,而无需去改动已有的代码,提高了系统扩展性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。