C语言中怎么实现简单工厂模式
简单工厂模式概述
简单工厂模式是一种创建型设计模式,它封装了对象的具体创建逻辑,通过一个共同的工厂类来创建不同类型的对象。该模式使得系统可以在不知道具体产品类的情况下创建对象。简单工厂模式通常包含三个角色,分别是工厂类(SimpleFactory)、抽象产品类(Product)和具体产品类(ConcreteProduct)。
简单工厂模式实现步骤
要实现简单工厂模式,可以按照以下步骤进行:
1. 定义一个抽象产品类(Product),定义产品的公共接口,该接口将由具体产品类实现。
2. 创建具体产品类(ConcreteProduct),实现抽象产品类定义的接口。
3. 创建工厂类(SimpleFactory),该类通常包含一个静态方法或者工厂方法,用于根据不同的条件来创建具体产品对象。
示例代码
下面是一个简单的示例代码,演示了如何使用简单工厂模式来创建不同类型的计算器对象:
#include<stdio.h>
// 抽象产品类
typedef struct _Calculator {
int (*calculate)(int, int);
} Calculator;
// 具体产品类
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
// 简单工厂类
Calculator* createCalculator(char operator) {
Calculator* calculator = NULL;
switch (operator) {
case '+':
calculator = (Calculator*)malloc(sizeof(Calculator));
calculator->calculate = add;
break;
case '-':
calculator = (Calculator*)malloc(sizeof(Calculator));
calculator->calculate = subtract;
break;
default:
printf("Unsupported operator\n");
break;
}
return calculator;
}
int main() {
char operator;
printf("Enter operator (+ or -): ");
scanf("%c", &operator);
Calculator* calculator = createCalculator(operator);
if (calculator != NULL) {
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
int result = calculator->calculate(a, b);
printf("Result: %d\n", result);
}
return 0;
}
该示例代码中,先定义了一个抽象产品类 Calculator,其中包含一个指向计算方法的函数指针。然后,定义了两个具体产品类 add 和 subtract,分别实现了 Calculator 的 calculate 方法。最后,在简单工厂类 createCalculator 中,根据不同的运算符创建不同的具体产品对象,并返回相应的对象指针。在主函数中,通过用户输入的运算符创建相应的计算器对象,然后根据用户输入的两个数执行对应的计算操作并输出结果。
猜您想看
-
SEO搜索优化技巧是什么
SEO搜索优化...
2023年07月22日 -
如何更改Steam平台上的个人头像?
如何更改Ste...
2023年04月17日 -
使用MySQL实现多线程优化查询
MySQL多线...
2023年05月05日 -
如何进行erlang定时请求ftp文件
1. Erla...
2023年05月26日 -
Python下Selenium PhantomJs设置header的方法是什么
1、什么是he...
2023年05月26日 -
怎样使用Loupe Cell Browser查看10X单细胞转录组分析结果
1. 准备数据...
2023年07月22日