变动-反馈机制,POSA经典MVC和COM 连接点的一点点比较

博客对POSA经典MVC和COM连接点进行小结。POSA经典MVC中,Model处理并通知更新,View输出并初始化Controller,Controller输入转换事件。COM连接点实现细力度Callback机制,还实现Observer模型。同时给出不同情景下适用的接口类型及网络层数据处理方式。

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

关键词:POSA 系统构架 分层 Architecutre Pattern Layer 交互式系统 MVC PME COM IConnectionPoint 连接点

MVC泛滥,Observer模式被滥用,COM连接点似乎很复杂。特小结了一下。没什么新意。高手勿看。

一、POSA 经典MVC
1.Model 负责处理,并通知View和Controller来更新(如通知View更新数据和Controller禁止某个功能以禁止某个输入)
2.View 负责输出,并初始化和自己一一对应的Controller
3.Controller负责输入,并转换为相应的事件,然后调用View(如滚动界面)或者Model(处理数据)并由后者来通知Observers。数据是什么,需要Observer主动来取,Model只是通知并要求Observer Update一下。是粗力度的Callback机制。

二、COM连接点
1.Sink-和MVC不同的是,COM实现了细力度的Callback机制,也就是Sink接口-一组回掉函数。当Model通知View来更新时候,COM直接访问View实现的Sink接口的函数。Sink由View实现,并由Model定义(其实哪个定义还不是一样)。View通过IQueryInterface得到Model,并实现Model定义的Sink后订阅事件。
2.ConnectionPoint-和MVC一样,实现了Observer模型,接受符合Sink接口规范的Observer(View/Controoler)的bind/unbind(advice/unadvice)。为了支持多个View,所以做了一个IConnectionPointContainer。

三、情景小节
1.如果Observer(View/Controller)请求的是服务,Model只是返回一个state,那么就用粗力度的经典接口实现。数据还是由Model来处理和存储。
2.如果Observer(View/Controller)请求的数据不是Model认识的东西,Model不负责(其实也负责一些,如内存pool,当然如果AOP了,就真的不用了),如Model收到的网络数据包,就直接通过Callback回给Observer,没必要先Update一下,然后Observer来个getData。这种情况适合细力度的接口。【网络层一般负责数据的send/recv,差错处理和完整性分析也可以放到网络层,当然需要内存pool的支持。数据分析好后,放入队列,然后通知Observer,Observer来队列getData也可以啦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值