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

由于项目保密性只介绍出现的问题和解决方案的思路。

说明:

利用中介者模式与观察者解决购物车与商品列表联动问题_第1张图片利用中介者模式与观察者解决购物车与商品列表联动问题_第2张图片

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

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

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

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

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

利用中介者模式与观察者解决购物车与商品列表联动问题_第3张图片

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

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

利用中介者模式与观察者解决购物车与商品列表联动问题_第4张图片

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

代码思路

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

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

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

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

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

这样整个模块的思路以及类与类的关系就清晰了,维护起来也方便。

你可能感兴趣的:(Android)