Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 设计模式中的观察者_Oop_Design Patterns - Fatal编程技术网

Oop 设计模式中的观察者

Oop 设计模式中的观察者,oop,design-patterns,Oop,Design Patterns,可以将观察者用作另一个观察者的可观察对象吗?我的意思是这样的: TotalPrice (observator) ItemPrice (observator / observable for TotalPrice) ItemCharacteristic1 (observable for ItemPrice) ItemCharacteristic2 (observable for ItemPrice) ItemCharacteristic3

可以将观察者用作另一个观察者的可观察对象吗?我的意思是这样的:

TotalPrice (observator)
    ItemPrice  (observator / observable for TotalPrice)
        ItemCharacteristic1 (observable for ItemPrice)
        ItemCharacteristic2 (observable for ItemPrice)
        ItemCharacteristic3 (observable for ItemPrice)
    ServicePrice  (observator / observable for TotalPrice)
        ServiceCharacteristic1 (observable for ServicePrice)
        ServiceCharacteristic2 (observable for ServicePrice)
        ServiceCharacteristic3 (observable for ServicePrice)

或者有更好的设计模式吗?

观察者和可观察者都是接口。即使在不允许多重继承的语言(如C#)中,实现这两个接口仍然可以。而且确实存在这种开箱即用的实施方式,按照被称为主体的惯例。所以,是的,只要您的实现尊重语义就可以了