有这两种模式:观察者和装饰者。两者都使我能够在完成任务之后(或者在装饰者之前)添加动作。但他们的实施不同。所以我什么时候应该使用装饰者或观察者。
到目前为止,我提出了这个问题:
装饰器:将业务功能添加到服务中,该服务将改变装饰服务所使用的实体的状态。
观察者:更新视图模型/ gui,连接基础结构服务,更改其他实体的状态
例如在预订级别我有预订实体,第一项服务将创建预订并标记住宿不可用:
我是对的吗?
答案 0 :(得分:1)
这两种模式并不相似。如果在保持相同的界面时需要对对象的其他职责,则应使用Decorator。我不明白为什么在这种情况下你需要保持相同的界面,因此我反对Decorator。
当您希望收到另一个对象的更改通知时(例如“在完成某项操作后添加操作”),观察者很好,尽管可能有更简单的方法。
答案 1 :(得分:0)
观察者是行为模式。 装饰者是结构模式。
使用 observer 实现事件处理(它将不同类的一些方法调用相互绑定)。 使用装饰器,您可以在运行时更改(扩展)某些对象的功能(它会更改对象本身 - 多亏了多态,因此可以覆盖相同的方法等)。
在您的示例预订应用程序中,我将使用这两种模式(如您所示)。