简单工厂模式

简单工厂模式

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

本文介绍了简单工厂模式的实现,定义了产品接口及两个具体产品(ConcreteProductA和ConcreteProductB)。通过SimpleFactory结构体,根据输入类型创建相应的产品实例,并调用其操作方法。

🔎

延伸解读

简单工厂的职责与调用方式

在示例中,SimpleFactory 结构体承担了创建产品的职责,其 CreateProduct 方法根据传入的字符串类型返回对应的 Product 接口实例。客户端(如 main 函数)只需调用工厂方法并传入类型标识,无需直接实例化具体产品,从而将对象的创建与使用分离。

产品接口与具体实现的解耦

Product 接口定义了 Operation 方法,ConcreteProductA 和 ConcreteProductB 分别实现了该方法。工厂返回的是 Product 接口类型,客户端通过接口调用 Operation,不依赖具体产品类型。这种设计降低了客户端与具体产品之间的耦合,便于替换或扩展产品实现。

类型判断与默认处理

CreateProduct 方法使用 switch 语句根据 productType 字符串决定创建哪个具体产品,当类型不匹配任何 case 时返回 nil。这意味着调用方需要处理可能为 nil 的返回值,否则直接调用 Operation 可能引发运行时错误。示例中仅演示了有效类型 "A" 和 "B" 的情况。

Q&A

什么是简单工厂模式?

简单工厂模式是一种创建对象的设计模式,通过一个工厂类根据输入类型创建相应的产品实例。

简单工厂模式中如何定义产品接口?

产品接口通过定义一个操作方法Operation来实现,所有具体产品都需要实现这个接口。

在简单工厂模式中,如何创建具体产品?

通过SimpleFactory结构体的CreateProduct方法,根据输入的产品类型返回相应的ConcreteProductA或ConcreteProductB实例。

ConcreteProductA和ConcreteProductB有什么区别?

ConcreteProductA和ConcreteProductB都是实现了Product接口的具体产品,但它们的Operation方法返回不同的字符串。

如何在main函数中使用简单工厂模式?

在main函数中,创建SimpleFactory实例并调用CreateProduct方法生成产品A和产品B,然后输出它们的操作结果。

简单工厂模式的优缺点是什么?

优点是可以集中管理产品创建,降低耦合度;缺点是增加了工厂类的复杂性,且不易扩展新产品。

🏷️

标签

➡️

继续阅读