您的位置:首页 > 其它

观察者模式在项目中的使用

2018-03-21 17:30 183 查看
最近用到的场景:
1.购物车
2.聊天消息

我在把东西放到购物车里的时候,UI有好多地方需要更新,而且我对购物车内的商品进行增删操作的场景又特别多,这个时候去在每一个地方都去进行一个修改肯定是不好的。

解决方法:
监听数据集的变化。但是怎么监听数据集的变化是一个巨大的难题。这个时候你就需要封装数据集,封装add、remove操作。那样的话就可以在对数据集的操作之后增加notify所有观察者的操作。
我的所有的观察者
private List<PriceObserver> priceObservers = new ArrayList<>();我进行一个notify
for (PriceObserver observer : priceObservers) observer.notifyChanged(String.valueOf(shoppingCartTotalPrice));这样就可以实现,所有的UI更新,统一管理了。只需要进行一个注册观察者和解注册观察者的操作就可以
public void registerPriceObserver(PriceObserver observer) { priceObservers.add(observer); }

public void unregisterPriceObserver(PriceObserver observer) { priceObservers.remove(observer); }这样一来,上面提到的:“而且我对购物车内的商品进行增删操作的场景又特别多”这个问题也自动得到了解决。因为我是调用的被封装后的增删方法,我就不需要关注UI更新的细节了。

我这里是更新了数据集,然后更新所有UI,如果你想精确点,可以再细化下,不难的。
重新理一下:封装了数据集,解决了“增删操作的场景又特别多”的这个问题,用了观察者,解决了“UI有好多地方需要更新”。其实我这样处理的比较粗糙,正常情况是一个增删操作会对应几处UI的更新的,多处增删操作可能只会更新一处UI,这里需要你自己去细化一下了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: