观察者模式
在软件构建过程中,需要为某些对象建立一种通知依赖关系:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者)都将得到通知。
1、如下是一个文件分割器的伪码,分为两部分,MainForm中设置文件路径及分割的次数,在成员函数中,生成分割器并调用分割器;FileSpliter为文件分割类。
2、需求变化:增加一个分割文件时的进度条
直接思考,增加一个进度条控件progressBar即可。
问题:这个进度条依赖于具体实现,当进度条形式发生变化时,会导致紧耦合。
3、将进度条定义为一个抽象接口,将具体通知控件,更改为抽象通知机制。
在MainForm中继承这个抽象接口,并实现DoProgress
注:不建议使用多继承,除非是继承一个父类,其他都是接口或抽象基类。
4、上述改进适合单个观察者,如果是多个观察者呢?可以使用List(便于增加、删除)来存储多个,
增加多个观察者