16、观察者模式(Observer)

本文深入探讨了观察者模式在软件设计中的核心作用,通过实例展示了如何利用此模式实现对象间的依赖关系,以及如何高效地进行状态更新。同时,对比了未使用和使用模式两种情况下的操作流程,强调了观察者模式在复杂系统中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
main(),
IObservable,被观察者接口
CHanFeiZiObservable,被观察者韩非子
IObserver,观察者接口
CLiSiObserver,观察者李斯
CZhouSiObserver观察者周斯
说明:将观察者聚集到被观察者韩非子身边,韩非子的每一个举动都会通知给观察者,如李斯或周斯。
注意:最多允许一个对象既是观察者也是被观察者。就像数据库中的触发器一样,成为一个复杂的链就很难维护了。观察者类似于委托的处理方式。


void no_use_Observer()
{
//注未使用模式调用ICorp、CLeaf、CBranch这三个类来组织。
}


void no_use_Observer_new()
{
HanFeiZiNew hanfeizi;
hanfeizi.HaveBreakfast();
hanfeizi.HaveFun();
}


void use_Observer()
{
IObserver *pLiSi = new LiSiObserver();
        IObserver *pZhouSi = new CZhouSiObserver();


HanFeiziObservable *pHanFeiZi = new HanFeiziObservable();


pHanFeiZi->AddObserver(pLiSi);
        pHanFeiZi->AddObserver(pZhouSi);
pHanFeiZi->HaveBreakfast();


delete pLiSi;
pLiSi = NULL;
delete pZhouSi;
pZhouSi = NULL;
delete pHanFeiZi;
pHanFeiZi = NULL;
}


int main()
{
//未使用模式的调用;比较原始的方法,用线程来观察。。
no_use_Observer();
        //把李斯这个类聚集到韩非子这个类上。
        no_use_Observer_new();
//使用组合模式后的调用;更抽象的方式,想要观察韩非子的人多了去了,不可能只允许李斯观察。。
use_Observer();
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值