首页 理论教育 抽象工厂模式在《软件系统分析与体系结构设计》中的应用

抽象工厂模式在《软件系统分析与体系结构设计》中的应用

时间:2023-10-16 理论教育 版权反馈
【摘要】:工厂方法模式有一个问题:类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以从设计角度考虑会有一定的问题,这就要用到抽象工厂模式。图10-4抽象工厂模式示例首先,创建接口:public interface Payer{public void pay();}其次,创建两个实现类:public class CashPayer implements Payer{@Overridepublic void Pay(){System.out.println("this is Cash Payer!

抽象工厂模式在《软件系统分析与体系结构设计》中的应用

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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈