10.4.2 抽象工厂模式

更新于 2026年10月10日 版权声明
10.4.2 抽象工厂模式

工厂方法模式有一个问题:类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以从设计角度考虑会有一定的问题,这就要用到抽象工厂模式。它提供一个创建一系列相关或相互依赖对象的接口,而不需指定它们具体的类,这样一旦需要增加新的功能,直接增加新的工厂类即可,不需要修改之前的代码,如图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(){(https://www.daowen.com)

    return new CashPayer();

  }

 }

 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接口,而无需去改动已有的代码,提高了系统扩展性。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)