工厂设计模式C语言实现
时间: 2023-03-20 11:03:09 浏览: 80
工厂设计模式是一种创建型设计模式,它提供了一种创建对象的方式,使得对象的创建过程与具体使用代码分离,从而提高代码的可维护性和可扩展性。
在C语言中,可以使用结构体来实现工厂设计模式。首先定义一个工厂结构体,用于创建对象。这个结构体包含一个函数指针,指向一个用于创建对象的函数。然后定义一个接口结构体,用于表示所有被创建的对象共同具有的属性和方法。最后定义具体的对象结构体,它继承自接口结构体,并实现了接口结构体中的方法。
下面是一个简单的工厂设计模式的C语言实现示例:
```
#include <stdio.h>
/* 定义接口结构体 */
struct Shape {
void (*draw)(struct Shape *);
};
/* 定义具体的对象结构体 */
struct Circle {
struct Shape shape;
};
/* Circle的draw方法实现 */
void Circle_draw(struct Shape *shape) {
printf("Drawing a circle\n");
}
/* 定义工厂结构体 */
struct ShapeFactory {
struct Shape *(*create)(void);
};
/* Circle的创建方法实现 */
struct Shape *Circle_create(void) {
struct Circle *circle = malloc(sizeof(struct Circle));
circle->shape.draw = Circle_draw;
return (struct Shape *)circle;
}
/* 工厂结构体中创建函数指向具体的创建方法 */
struct ShapeFactory shapeFactory = {
.create = Circle_create
};
int main() {
/* 通过工厂结构体创建对象 */
struct Shape *shape = shapeFactory.create();
/* 调用对象的方法 */
shape->draw(shape);
return 0;
}
```
在这个示例中,我们使用了一个工厂结构体ShapeFactory来创建具体的对象,这里我们只实现了一个Circle的对象,但是你可以通过新增一个函数指针来创建其他类型的对象。另外,我们使用了接口结构体Shape来表示所有对象的公共属性和方法,这样可以方便的扩展其他对象的实现。