观察者模式,可以理解为不同的主题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;