概述
目录
- 前言
- 1 继承、封装、多态
- 2 单件模式
- 3 外观模式
前言
偶然在网上看到C语言设计模式的文章,觉得很有用,在此开一篇连载,将自己学到的东西给大家展示下,希望对大家有用
1 继承、封装、多态
(1)继承性
typedef struct _parent
{
int data_parent;
}Parent;
typedef struct _Child
{
struct _parent parent;
int data_child;
}Child;
在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样,不管是数据的访问、数据的强转、数据的访问都不会有什么问题。
(2)封装性
struct _Data;
typedef void (*process)(struct _Data* pData);
typedef struct _Data
{
int value;
process pProcess;
}Data;
封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样,我们就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数。封装性,这是类拥有的属性,当然也是数据结构体拥有的属性。
(3)多态
typedef struct _Play
{
void* pData;
void (*start_play)(struct _Play* pPlay);
}Play;
多态,就是说用同一的接口代码处理不同的数据。比如说,这里的Play结构就是一个通用的数据结构,我们也不清楚pData是什么数据,start_play是什么处理函数?但是,我们处理的时候只要调用pPlay->start_play(pPlay)就可以了。剩下来的事情我们不需要管,因为不同的接口会有不同的函数去处理,我们只要学会调用就可以了。
2 单件模式
单件模式的技巧就在于类的构造函数是一个私有的函数。但是类的构造函数又是必须创建的?怎么办呢?那就只有动用static函数了。我们看到static里面调用了构造函数,就是这么简单。
typedef struct _DATA
{
void* pData;
}DATA;
void* get_data()
{
static DATA* pData = NULL;
if(NULL != pData)
return pData;
pData = (DATA*)malloc(sizeof(DATA));
assert(NULL != pData);
return (void*)pData;
}
这个函数可以用在系统加载的时候,申请一次内存,永久不释放;除非系统重启。不能用在内存频繁申请和释放的地方
3 外观模式
类似肯德基的套餐,汉堡薯条是基础接口,将已有的一些基础接口重新组合形成新的接口作为中间层给用户使用。
最后
以上就是坦率学姐为你收集整理的【C】C语言中的设计模式前言1 继承、封装、多态2 单件模式3 外观模式的全部内容,希望文章能够帮你解决【C】C语言中的设计模式前言1 继承、封装、多态2 单件模式3 外观模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复