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

圈圈笔记 128

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

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

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

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

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

以下是使用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方法输出信息。

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

上一篇:

下一篇:

  推荐阅读

分享