我正在开发一个将事件与观察者关联的类,但在这种情况下,观察者可以使用参数中接收的参数来更改对象内的值。
Observer是否是那些“观察者”的正确名称?我只是想找到正确的名字(如果已经有这种情况的模式那么它也会很棒)
编辑:以下是一个示例
A是一个可观察的对象
B是观察者
A具有由int表示的属性,而B函数用于保证该属性始终高于50。
因此,当A向B发起事件时,将调用类似于:
的内容void BObserverMethod(Action action, A a)
{
if(a.property =< 50)
a.property = 50;
}
问题是:我能称之为B?当他做的不仅仅是观察时,将其称为Observer是否正确?
答案 0 :(得分:1)
观察者模式实际上只是解决了多个观察者可以更新主题中的变化的解耦方式。模式中没有任何内容阻止观察者通过在主题中设置某个值来响应更新。
然而,常识要求观察者必须小心修改主体的可观察属性;两个或更多这样的观察者很容易引起一轮又一轮的更新。如果两个具有相反意图的观察者都修改了相同的属性,你很容易发现自己陷入了无限循环:
void BObserverMethod(Action action, A a)
{
if(a.property =< 50)
a.property = 50;
}
void CObserverMethod(Action action, A a)
{
if(a.property >= 50)
a.property = 35;
}