装饰模式的本质在运行期扩展一个类的功能:通过包裹类继承原有方法并扩展新的方法。
装饰模式可看成继承功能的一种,C中很少使用继承,勉强使用,可以看成结构体的包含。
如下:
1)例1,ipv4扩展后支持ipv6:
- typedef struct _ipaddr
- {
- char ip_addr[4];
- }ipaddr;
- typedef union _ip_addr_u
- {
- ipaddr ipv4;
- ipadd6 ipv6;
- }IP_ADDR_U;
2)例2,消息封装
L2协议栈消息处理,直接封装L3数据,而无需重复定义。