C语言和设计模式(3.7观察者模式和3.1责任链模式)

        观察者模式,可以理解为不同的主题1,主题2, ...主题n 对某个设备的状态感兴趣,需要在此设备的状态变更时,能及时高效的地被手机所感知,因此这些手机1,手机2,...手机n需要订阅该设备的状态,当设备状态变更时根据订阅列表逐个通知所有订阅此消息的手机。--也可称之为订阅发布模式。观察者没有条件判断,所有都要执行,责任链有条件判断,会有不执行。

结构体如下:

#define MAX_BINDING_NUMBER 10
typedef struct _Subscriber {
    int type;
    void ( *update )( struct _Subscriber *subscriber, char *recv_msg );
} Subscriber;
typedef struct _Topic {
    Subscriber *subscribers[MAX_BINDING_NUMBER];
    int number;
    void ( *attach )( struct _Topic *topic, Subscriber *subscriber );
    void ( *deattach )( struct _Topic *topic, Subscriber *subscriber );
    void ( *notify )( struct _Topic *topic, char *msg );
} Topic;
typedef struct _Publisher {
    int type;
    void ( *publish )( struct _Publisher *publisher, char *pub_msg, Topic *topic );
} Publisher;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值