内容提要
本文介绍了简单工厂模式的实现,定义了产品接口及两个具体产品(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,然后输出它们的操作结果。
简单工厂模式的优缺点是什么?
优点是可以集中管理产品创建,降低耦合度;缺点是增加了工厂类的复杂性,且不易扩展新产品。