首页 > 数据库 > 数据库开发技术 > 今日代码大赏 | 抽象工厂模式
工厂模式根据其实现方式的不同,可以分为简单工厂模式、工厂方法模式和抽象工厂模式。
前几天我们分享了用 Java 实现工厂方法模式,有需要了解的同学可点击下方标题直接跳转哦!
今天我们来了解下抽象工厂模式。抽象工厂模式是一个高级的结构型模式,它结合了多个工厂方法,提供了一个统一的接口来创建一系列相关或依赖的对象。这种模式常用于当需要生产相互关联或相互依赖的产品族时。
抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而不需要指定它们的具体类。它主要用于解耦系统和对象的创建过程,使得系统更容易扩展。
下面是使用Java实现抽象工厂模式的示例代码:
// 产品接口
interface Product {
void use();
}
// 具体产品类A
class ConcreteProductA implements Product {
@Override
public void use() {
System.out.println("使用产品A");
}
}
// 具体产品类B
class ConcreteProductB implements Product {
@Override
public void use() {
System.out.println("使用产品B");
}
}
// 抽象工厂接口
interface Factory {
Product createProduct();
}
// 具体工厂类A
class ConcreteFactoryA implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
// 具体工厂类B
class ConcreteFactoryB implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Factory factoryA = new ConcreteFactoryA();
Factory factoryB = new ConcreteFactoryB();
Product productA = factoryA.createProduct();
productA.use();
Product productB = factoryB.createProduct();
productB.use();
}
}
在上述代码中,我们首先定义了两个产品接口 Product 和相应的具体产品类 ConcreteProductA 和 ConcreteProductB。然后,我们定义了一个抽象工厂接口 Factory,以及两个具体工厂类 ConcreteFactoryA 和 ConcreteFactoryB,它们分别创建相应的产品对象。客户端代码通过具体工厂类来获取产品对象,并调用产品的 use 方法。
抽象工厂模式的优点
1)解耦:将具体的创建逻辑与使用逻辑分离,提高系统的灵活性。
2)扩展性:增加新的产品族变得容易,只需提供新的具体工厂即可。
抽象工厂模式的缺点
产品族固定:一旦产品族确定,新增一个产品族会比较困难。
今天的代码大赏就到这里。希望通过这篇文章,你能够对抽象工厂模式有一个更深入的理解。
完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!
在线访问:https://www.codecopy.cn/post/msf0ht
在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~
往期推荐
代码小抄插件上线!一键分享代码
今日代码大赏 | Java 序列化
今日代码大赏 | 工厂方法模式
今日代码大赏 | Git 常用命令
原文作者:程序员鱼皮;如有侵权,请联系管理员删除。