再次百度一波观察者模式概念:定义了对象的一对多关系,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新
我们明确目的,需要主题(被观察者,也就是ACSControlerServer)一有变化就能通知到观察者(ACSMotorClient)。同时为了业务需求,我们必须做到可以动态的删除或者增加观察者。
智者见智,实现观察者模式的方法有很多,我用到的无非是实现Subject和Observer接口。
用visio重新画个图梳理一下思路。
主题只知道观察者实现了Observer接口,其他的可以不管不问,只需要知道谁是观察者,并向其push信息就好了。主题部分的代码不需要修改就可以变更观察者。高端点说,主题可以在运行的时候随意的删增观察者,不需要考虑与观察者的兼容性,本身不会受到观察者变更的影响。
分成2部分,第一部分建立抽象类和接口
1.主题:三个需要实现的接口
public abstract class SubjectModelBase
{
private List<OberserModelBase> observers = new List<OberserModelBase&