c语言设计模式,原理与实践
在C语言中,设计模式是一种通用的、可重用的解决方案,用于解决软件开发过程中出现的常见问题。虽然C语言本身并不像面向对象的语言那样直接支持某些设计模式,但许多设计模式仍然可以通过巧妙地使用C语言的功能来实现。
1. 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 ```c include include
typedef struct { int value; } Singleton;
static Singleton instance = NULL;
Singleton get_instance { if { instance = mallocqwe2; instance>value = 0; } return instance; }
int main { Singleton s1 = get_instance; Singleton s2 = get_instance; printfs1, s2qwe2; return 0; } ```
2. 工厂模式(Factory):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 ```c include include
typedef struct { void ; } Shape;
void draw_circle { printf; }
void draw_rectangle { printf; }
Shape create_circle { Shape circle = mallocqwe2; circle>draw = draw_circle; return circle; }
Shape create_rectangle { Shape rectangle = mallocqwe2; rectangle>draw = draw_rectangle; return rectangle; }
int main { Shape circle = create_circle; Shape rectangle = create_rectangle; circle>draw; rectangle>draw; free; free; return 0; } ```
3. 观察者模式(Observer):对象间的一对多依赖关系,当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。 ```c include include
typedef struct { void ; } Subject;
typedef struct { Subject subject; void ; } Observer;
void subject_notify { observer>notify; }
void observer_notify { printf; }
int main { Subject subject = mallocqwe2; Observer observer = mallocqwe2; observer>subject = subject; observer>notify = observer_notify;
subject_notify; free; free; return 0; } ```
4. 装饰者模式(Decorator):动态地给一个对象添加一些额外的职责。 ```c include include
typedef struct { void ; } Component;
void draw_circle { printf; }
void draw_rectangle { printf; }
typedef struct { Component component; void ; } Decorator;
void draw_with_border { printf; component>draw; }
int main { Component circle = mallocqwe2; circle>draw = draw_circle; Decorator decorator = mallocqwe2; decorator>component = circle; decorator>draw = draw_with_border;
decorator>draw; free; free; return 0; } ```
这些只是几个例子,实际上还有很多其他的设计模式可以在C语言中实现。设计模式的使用可以提高代码的可重用性、可维护性和可扩展性。
深入浅出C语言设计模式:原理与实践
一、设计模式概述
设计模式分为三大类:创建型模式、结构型模式和行为型模式。
创建型模式:主要关注对象的创建过程,如工厂模式、单例模式等。
结构型模式:主要关注类和对象的组合,如适配器模式、装饰器模式等。
行为型模式:主要关注对象之间的交互和职责分配,如观察者模式、策略模式等。
二、C语言中的创建型模式
创建型模式主要关注对象的创建过程,以下介绍几种常见的创建型模式及其在C语言中的实现。
1. 工厂模式
工厂模式是一种创建对象的方式,使得对象的创建过程与具体使用代码分离。在C语言中,可以使用结构体来实现工厂模式。
include
include
// 定义接口结构体
struct Shape {
void (draw)(struct Shape);
// 定义具体的对象结构体
struct Circle {
struct Shape shape;
// Circle的draw方法实现
void Circle_draw(struct Shape shape) {
printf(\