我知道设计模式通常与面向对象编程有关,但是您是否有一些在编写C程序时经常使用的模式?
我对经典面向对象模式的简单翻译不感兴趣,请不要提及Duff的设备。;-)
发布于 2010-11-06 18:59:02
通过回调实现多态,例如标准库的qsort
函数。它所需要的只是一种比较两个元素的方法,并且它可以对它们的数组进行排序。
通过使用函数集(Vtable)来表示类型的相关属性,以便泛型例程可以有效地处理它,您可以比这复杂得多。例如,在打开的文件或网络端口上进行读取、写入等调用。
发布于 2010-11-06 18:55:53
是的,有。延迟初始化、单例、对象池、对象状态等都很容易在纯C中实现。
示例(延迟初始化)
#include <stdio.h>
struct foo
{
int payload;
};
int calculate_payload()
{
printf("%s\n", "Performing lengthy initialization...");
return 42;
}
struct foo *get_default_foo()
{
static int foo_calculated = 0;
static struct foo default_foo;
if (!foo_calculated) /* assuming single-threaded access */
{
foo_calculated = 1;
default_foo.payload = calculate_payload();
}
return &default_foo;
}
int main()
{
struct foo *foo1, *foo2;
printf("%s\n", "Starting the program");
foo1 = get_default_foo();
printf("%d\n", foo1->payload);
foo2 = get_default_foo();
printf("%d\n", foo2->payload);
return 0;
}
发布于 2010-11-06 18:56:27
设计模式通常对只有一个级别的现有环境提供的东西进行建模。如果您将C及其标准库作为环境,那么面向对象是一个卓越的设计模式。
https://stackoverflow.com/questions/4112796
复制相似问题