您的位置:首页 > 其它

利用中介者模式与观察者解决购物车与商品列表联动问题

2017-07-11 10:14 316 查看
由于项目保密性只介绍出现的问题和解决方案的思路。

说明:





1 商品分类列表:显示商品分类名称以及此分类下放入购物车商品的总数量。

2 商品列表:显示商品信息和两个操作按钮“+”,“-”以及加入购物车数量。

3 购物车列表:显示购物车商品信息和两个操作按钮“+”,“-”以及数量。

4 搜索列表:显示商品信息和两个操作按钮“+”,“-”以及加入购物车数量。

问题:商品列表、购物车列表、搜索列表都可以将商品添加到购物车,当一方操作如何将其他列表已加入购物车商品的数量进行同步?



最初我采用一方操作通知其他三方(如上图),先不说如何实现假如又出现一个列表这层关系就变成了一对四,对象关系更加错综复杂难以维护起来。

为此我找寻解决此类问题的最佳解决方案中介者模式+观察者模式



如图所示四个列表中间多了一个商品管理也就是中介者,现在的关系就变成了一对一,当一个列表数量改变只要告诉商品管理就好了他会通知其他列表更新(使用观察者模式)。

代码思路

1. 商品管理为单例并维护商品集合(所有商品列表的数据源)。

2. 商品管理定义通知更新回调接口,并维护一组回调接口List。(所有商品列表实现此接口并添加进来)

2. 商品管理提供add(Godd good) ,remove(Good good)方法(列表操作时调用)并在最后调用updateNotify()。

3. updataNotify()方法迭代回调接口List并执行回调方法。

4. 所有的列表在回调方法里进行更新Adapter.notifyDataSetChanged()。

这样整个模块的思路以及类与类的关系就清晰了,维护起来也方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: