设计模式之解耦

设计模式经常考虑的一个问题是将对象间关系解耦,逼近开闭原则,使得代码容易扩展

最近设计到读写者间信息的传递,writer需要定期将信息告知reader,最开始想到的是监听者模式,将reader注册到writer,

后来涉及到writer未必总是提前存在,因此需要一个中心者协调,这样演变为类似pub/sub的架构(中心管理者来负责更多的协调)

ps:一篇很好的Event Notifier设计模式分析文章

writer,reader关系分析(原始的单向传递构思):

创建Reader时,需要判断Writer是否存在,如果存在需提供其activeSegmentId,及active Vector到reader,并将reader注册到writer,以便于reader接收最新的数据;不存在时,则暂不处理,当创建writer时注意传递信息。

考虑到Writer和Reader间信息的传递,将cgManager设计为Writer的监听者,Reader作为cgManager的监听者,VectorWriter侧信息变化时,首先传递到cgManager,然后传递到Reader。同时cgManager负责协调Reader和Writer的早晚到达问题:这样进行传递使得设计略显复杂,于是演变为类pub/sub的架构,cgManager不作为writer的监听者,而是作为一个管理者。

你可能感兴趣的:(设计模式之解耦)