求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
 


基于 UML 和EA进行分析设计
7月30-31日 北京+线上



大模型核心技术RAG、MCP与智能体实践
8月14-15日 厦门



图数据库与知识图谱
8月23日-24日 北京+线上
 
 
 

C语言和设计模式 教程
开篇
单件模式
原型模式
组合模式
模板模式
工厂模式
责任链模式
抽象工厂模式
迭代器模式
外观模式
代理模式
享元模式
装饰模式
适配器模式
策略模式
中介者模式
建造者模式
桥接模式
观察者模式
备忘录模式
解释器模式
命令模式
状态模式
访问者模式
继承、封装、多态
 
 

装饰模式
1103 次浏览
37次  

装饰模式是比较好玩,也比较有意义。其实就我个人看来,它和责任链还是蛮像的。只不过一个是比较判断,一个是迭代处理。装饰模式就是那种迭代处理的模式,关键在哪呢?我们可以看看数据结构。

typedef struct _Object  
{
struct _Object* prev;

void (*decorate)(struct _Object* pObject);
}Object;

装饰模式最经典的地方就是把pObject这个值放在了数据结构里面。当然,装饰模式的奥妙还不仅仅在这个地方,还有一个地方就是迭代处理。我们可以自己随便写一个decorate函数试试看,

void decorate(struct _Object* pObeject)  
{
assert(NULL != pObject);

if(NULL != pObject->prev)
pObject->prev->decorate(pObject->prev);

printf("normal decorate!\n");
}

所以,装饰模式的最重要的两个方面就体现在:prev参数和decorate迭代处理。

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1103 次浏览
37次
 捐助