Java:如何使用观察者设计模式更新一个类的所有实例
所以我有一个有数据成员的电影类:id,name,genre,type和price。Java:如何使用观察者设计模式更新一个类的所有实例
我可以使用观察者设计模式来更新所有这些电影的价格。所以我想选择一个选项来将所有电影的促销加入到客户的半价中。 我能够通常这样做,但必须尝试使用该项目的一些设计模式。
更新:
对不起,如果我不清楚。我想知道是否可以使用观察者设计模式来更新我的电影类的所有电影实例的价格。所以当员工登录系统时,他可以选择添加电影推广。所以当他选择“所有电影半价”时,它将以新价格更新电影类的所有实例。
我不知道这甚至有可能与观察者,但我在这个项目中使用了一些设计模式,并认为我可以利用这里
观察者如果电影宣传是一个事件,电影实例是Observers
感兴趣的事件,然后我觉得Observer pattern
可以适用于在问题中发布的情况。 一个接口可以如下设计:
public interface PromotionObserver{
void notify();
}
该接口可以通过类薄膜来实现。如果Film有各种子类,那么notify()
可以由所有子类实现,并且在实现中可以进行特定于子类的价格相关变化。如果更改是通用的,如价格只是原始价格的一半,那么简单地说,父级可以实施notify()
,并且像price = price/2;
这样的代码就足够了。
类负责处理Film promotion event
可以有像registerPromotionObserver(PromotionObserver promotionObserver);
方法沿List<PromotionObserver> promotionObservers;
当职员的迹象,并决定让所有或几部电影作为促销(可能是在UI方面的复选框按钮点击),那么在一个循环中,可以迭代promotionObservers
,并且每个PromotionObserver notify()的每个注册对象可以被调用。
@Shaun Gilbert我的答案是否解决了您的问题,或者您需要进一步的帮助。如果需要更多信息,请告诉我们 –
我无法理解您的问题。你想更新一堆不同的电影来同时享受折扣吗? –
我很难看到它是关于Observer模式的,它使得您可以将它视为“对C的所有实例执行某些操作”形式的问题。 –
查看关于装饰模式的[Head First Design Patterns](http://shop.oreilly.com/product/9780596007126.do)章节。看起来与你的问题非常相似。 –