C语言和设计模式(装饰模式)

一句话理解

装饰模式中的角色:
1、油漆工(decorator)是用来刷油漆的
2、被修饰者decoratee是被刷油漆的对象
含义:
动态给一个对象添加一些额外的功能和职责,就象在墙上刷油漆。
实现装饰模式:
有很多形式,最常见的一种就是:
1、实现被装饰者类
2、定义被装饰者对象
3、使用被装饰者对象产生装饰者对象

举例1

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

举例2

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


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迭代处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是适合C语言设计模式的书籍推荐: 1. 《设计模式:可复用面向对象软件的基础》(原书名:Design Patterns: Elements of Reusable Object-Oriented Software):该书是设计模式领域的经典之作,涵盖了23种设计模式,其中包括工厂模式、单例模式、适配器模式、装饰器模式等。虽然该书是以面向对象编程为基础,但其中的很多模式同样适用于C语言。 2. 《C语言设计模式》(原书名:C Design Patterns):该书作者是Steve Metsker,他在书中介绍了一些常见的设计模式,并提供了C语言的实现示例。该书适合已经掌握C语言基础的读者阅读。 3. 《深入浅出设计模式》(原书名:Head First Design Patterns):该书采用了很多图表和实例来演示设计模式的应用。虽然该书以Java语言为例,但其中的思想同样适用于C语言等其他编程语言。 4. 《C++设计模式》(原书名:C++ Design Patterns and Derivatives Pricing):该书围绕金融衍生品定价展开,介绍了一些常见的设计模式,并提供了C++语言的实现示例。虽然该书以C++为例,但其中的很多思想同样适用于C语言。 5. 《设计模式解析》(原书名:Design Patterns Explained:A New Perspective on Object-Oriented Design):该书作者是Alan Shalloway和James Trott,他们在书中介绍了一些常见的设计模式,并提供了C++语言的实现示例。虽然该书以C++为例,但其中的很多思想同样适用于C语言

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值