抽象工厂模式(一天一个设计模式——(2)抽象工厂模式)

圈圈笔记 61

抽象工厂模式的主要优点包括:

使得客户端代码与具体产品的实现分离,客户端不需要知道具体产品的类名,只需要知道它们所对应的工厂即可,降低了客户端与具体产品的耦合度。

更容易实现一组产品族的创建,只需要在抽象工厂中添加一个新的接口方法即可,同时也符合开闭原则。

符合单一职责原则,每个具体工厂只负责创建一组具体产品,不会与其他产品产生耦合。

总的来说,抽象工厂模式能够提供更高层次的抽象,同时也能够更好地管理不同产品族之间的关系,从而使得系统更加灵活和易于扩展。

以下是使用Java语言实现抽象工厂模式的示例代码:

首先,定义产品接口:

publicinterfaceProduct{voidshowInfo(); }然后,定义两种具体的产品类:publicclassConcreteProductAimplementsProduct{@OverridepublicvoidshowInfo(){ System.out.println("This is Concrete Product A."); } }publicclassConcreteProductBimplementsProduct{@OverridepublicvoidshowInfo(){ System.out.println("This is Concrete Product B."); } }接着,定义抽象工厂接口:publicinterfaceAbstractFactory{ProductcreateProductA();ProductcreateProductB(); }然后,定义两种具体的工厂类:publicclassConcreteFactory1implementsAbstractFactory{@OverridepublicProductcreateProductA(){returnnewConcreteProductA(); }@OverridepublicProductcreateProductB(){returnnewConcreteProductB(); } }publicclassConcreteFactory2implementsAbstractFactory{@OverridepublicProductcreateProductA(){returnnewConcreteProductB(); }@OverridepublicProductcreateProductB(){returnnewConcreteProductA(); } }最后,编写测试代码:publicclassAbstractFactoryDemo{publicstaticvoidmain(String[] args){ AbstractFactory factory1 =newConcreteFactory1(); Product productA1 = factory1.createProductA(); productA1.showInfo(); Product productB1 = factory1.createProductB(); productB1.showInfo(); AbstractFactory factory2 =newConcreteFactory2(); Product productA2 = factory2.createProductA(); productA2.showInfo(); Product productB2 = factory2.createProductB(); productB2.showInfo(); } }

在这个示例中,我们定义了两个具体的产品类ConcreteProductA和ConcreteProductB,它们都实现了Product接口,并分别实现了showInfo方法。然后,我们定义了抽象工厂接口AbstractFactory,它包含了两个方法createProductA和createProductB。接下来,我们定义了两个具体的工厂类ConcreteFactory1和ConcreteFactory2,它们都实现了AbstractFactory接口,并分别实现了createProductA和createProductB方法,返回不同的具体产品对象。最后,我们编写了测试代码,使用不同的工厂对象分别创建不同的产品对象,并调用它们的showInfo方法输出信息。

通过使用抽象工厂模式,我们可以将产品对象的创建过程与客户端代码分离开来,使得客户端只需要知道具体的工厂类和抽象产品类,而不需要关心具体的产品类。这种解耦合的方式可以更加灵活地设计和扩展系统。

上一篇:

下一篇:

  推荐阅读

分享