企业大型网站开发网站模板设计,wordpress电商插件下载,定制网站建设简介,com域名和cn域名说明#xff1a;
均由 chatgpt生成#xff0c;实例可以看出无法运行#xff0c;仅供参考~
UML图#xff1a; ‘ 表示public, - 表示private,“# 表示protected.”
一文掌握14种UML图-腾讯云开发者社区-腾讯云 (tencent.com)
五分钟带你读懂UML类图 - 知乎 (zhihu.com)…说明
均由 chatgpt生成实例可以看出无法运行仅供参考~
UML图 ‘ 表示public, - 表示private,“# 表示protected.”
一文掌握14种UML图-腾讯云开发者社区-腾讯云 (tencent.com)
五分钟带你读懂UML类图 - 知乎 (zhihu.com)
简单工厂模式 代码实现
#include stdio.h// 定义产品接口
typedef struct {void (*operation)();
} Product;// 具体产品A
typedef struct {Product product;
} ConcreteProductA;void ConcreteProductA_operation() {printf(具体产品 A 的操作\n);
}// 具体产品B
typedef struct {Product product;
} ConcreteProductB;void ConcreteProductB_operation() {printf(具体产品 B 的操作\n);
}// 工厂类
typedef struct {Product* (*createProduct)(char);
} Factory;Product* Factory_createProduct(char type) {switch (type) {case A:return (Product*)malloc(sizeof(ConcreteProductA));case B:return (Product*)malloc(sizeof(ConcreteProductB));default:return NULL;}
}int main() {Factory factory;factory.createProduct Factory_createProduct;// 创建产品AProduct* productA factory.createProduct(A);productA-operation(productA);// 创建产品BProduct* productB factory.createProduct(B);productB-operation(productB);free(productA);free(productB);return 0;
}
在上述示例中我们定义了一个产品接口 Product并以具体产品A和具体产品B实现该接口。然后我们定义了一个工厂类 Factory它包含一个用于创建产品的函数 createProduct。
在 createProduct 函数中我们根据输入的类型参数来创建不同的产品对象。如果类型是 A则分配内存给 ConcreteProductA 对象如果类型是 B则分配内存给 ConcreteProductB 对象。最后我们在 main 函数中使用工厂类来创建产品并调用其操作函数。
简单工厂模式Simple Factory Pattern是一种创建型设计模式它提供了一个统一的工厂类通过传入不同的参数来创建不同的产品对象。简单工厂模式将对象的创建逻辑封装在工厂类中客户端只需通过工厂类来获取所需的产品对象而无需关心具体的创建过程。
优点
简化对象的创建简单工厂模式可以将对象的创建逻辑集中到一个工厂类中使得客户端无需关心具体的创建细节只需通过工厂类获取所需的产品对象。解耦客户端和具体产品类客户端只依赖工厂类接口而不依赖具体的产品类。这样在需要更换或新增产品时只需修改工厂类而无需修改客户端代码。隐藏具体实现细节工厂类可以对客户端隐藏具体产品的实现细节只暴露工厂方法接口给客户端使用。
缺点
不符合开闭原则当需要新增产品时需要修改工厂类的代码违反了开闭原则。这意味着对于每个新增的产品都需要修改工厂类可能导致工厂类变得庞大而复杂。产品创建逻辑集中在一个类中简单工厂模式将对象的创建逻辑集中在一个工厂类中当产品较多时工厂类可能会变得复杂不易于维护和扩展。
适用场景
简单工厂模式适用于以下情况
对象的创建逻辑相对简单并且不需要频繁变动。客户端只需要通过一个统一的接口来获取产品对象而无需关心具体的创建过程。当需要隐藏产品的实现细节只暴露工厂方法给客户端使用时。
需要注意的是简单工厂模式并不是一个严格的设计模式它更像是一种编程习惯或者一种简化对象创建的方法。在具体项目中根据实际需求和复杂度可以选择使用其他更灵活和可扩展的创建型设计模式如工厂方法模式或抽象工厂模式。