观察者模式

在软件构建过程中,需要为某些对象建立一种通知依赖关系:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者)都将得到通知。

 

 1、如下是一个文件分割器的伪码,分为两部分,MainForm中设置文件路径及分割的次数,在成员函数中,生成分割器并调用分割器;FileSpliter为文件分割类。

 

2、需求变化:增加一个分割文件时的进度条

       直接思考,增加一个进度条控件progressBar即可。

      问题:这个进度条依赖于具体实现,当进度条形式发生变化时,会导致紧耦合。

 

 

3、将进度条定义为一个抽象接口,将具体通知控件,更改为抽象通知机制。

 在MainForm中继承这个抽象接口,并实现DoProgress   

 注:不建议使用多继承,除非是继承一个父类,其他都是接口或抽象基类。

 4、上述改进适合单个观察者,如果是多个观察者呢?可以使用List(便于增加、删除)来存储多个,

       

增加多个观察者

 

 

 

 

posted @ 2019-01-09 15:27  牧马人夏峥  阅读(142)  评论(0编辑  收藏  举报