小编JNo*_*ice的帖子

观察者模式 - 何时到

我们一直在我的工作场所争论有关使用观察者模式解决其中一个问题的问题.我不知何故闻到"过度使用",但我很开心.所以要求是

我们有一个对象层次结构 - >订单和订单中的多个订单项.订单取消后,所有订单项都需要取消.

为此,我们创建了一个OrderCancel类,它是Observer模式习语中的Subject和LineItemCancel类,它是Observer.我们还有一个带有cancelOrders(List orders)方法的OrderManager类,该方法实例化OrderCancel和相应的LineItemCancel对象,然后在OrderCancel中将它们全部注册.代码如下.

public class OrderManager {
    public void cancelOrders(List<Order> orders){
        for(Order order :orders){
            OrderCancel orderCancel = new OrderCancel(order);
            Listener listener = new LineItemCancel(order);
            orderCancel.addListeners(listener);
            orderCancel.cancel();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
public class OrderCancel implements Subject {
    private List<Listener> listeners = new ArrayList<Listener>();
    private Order order;

    public OrderCancel(Order order) {
        this.order = order;
    }

    @Override
    public void addListeners(Listener listener) {
        listeners.add(listener);
    }

    @Override
    public void notifyListeners() {
        for(Listener listener : listeners){
            listener.update();
        }
    }

    public void cancel() {
        notifyListeners(); …
Run Code Online (Sandbox Code Playgroud)

design-patterns overuse observer-pattern

5
推荐指数
1
解决办法
434
查看次数