Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

【2013.2.15】设计模式C++ 实现——Observer

$
0
0

// // // // // // // // //

///2013.2.15

// // // // // // // // //

如果要给设计模式按照难易程度评级别的话,

之前的设计模式大多是一星或一星半(当然,也有部分原因是我没有深入)。

但是今天要讲的这个设计模式,

难度应该是三星(Not samsung :-P)。


但与此相比,

其实用性却是五星级别的。


因为无所不在的MVC结构(Model/View/Control),

就是这个设计模式最好的实例。


当然,

因为本文的面向对象是初学者,

故笔者在这里不打算使用MVC作为讲解。

不过如果想要了解更多关于MVC,请戳这里


除此之外,

这个设计模式还有一个别名——发布/订阅模式。

运气不错,

我之前学习的《C#3.0设计模式》一书中就是使用这个例子来进行模式拆分讲解的:

最简单的形容就是网页中的RSS订阅了,

不过话说在这个时代这种订阅模式已经不再风靡,

取而代之的是微博2.0时代。


众所周知,

微博中我们每个人都是博主的同时也是粉丝。

我们可以关注别人,

也可以被关注。


从粉丝角度来讲,

每一个粉丝都是一个观察者(Observer),

他们都会订阅(关注)你(的微博),

当他们关注你的时候,

你将他们放到一个粉丝列表之中——我们称之为Attach,

然后在这个粉丝列表中,

每一次你发一条新微博(更新一次状态),

在这个粉丝列表中的人都将接收到这条通知(显示在微博消息中),

这个过程我们称之为Notify,


然而当他发现你有时候会刷屏的时候,

会很生气,

于是决定将你取消关注——我们称之为Detach。

于是他也将从你的粉丝列表中消失,

这样当你再次发送新微博的时候,

他将不再接收。


【核心】订阅者订阅发布者的发布(请连续念三遍,是不是会不经意间说出布丁布丁?;-P)。


UML图:


作者:Elezeor 发表于2013-2-15 22:16:36 原文链接
阅读:79 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>