MUSignal的实践案例-购物车

MUKit系列包含但不限于以下框架。

    MUTableViewManager                            pod 'MUKit/TableViewManager'
    MUNetworking                                  pod 'MUKit/Networking' 
    MUNavigation                                  pod 'MUKit/Navigation'
    MUSignal                                      pod 'MUKit/Signal' 
    MUEPaymentManager                             pod 'MUKit/EPaymentManager'
    MUShared                                      pod 'MUKit/Shared'
    MUCarousel                                    pod 'MUKit/Carousel'
    MUEncryption                                  pod 'MUKit/Encryption'
    MUCollectionViewManager                       pod 'MUKit/CollectionViewManager'
    MUPopupController                             pod 'MUKit/PopupController'
    MUPaperView                                   pod 'MUKit/PaperView'
    详细注释和案例稍后逐步更新.......

上一次给大家分享了MUKit/Signal的信号框架,但很多人表示不会用或者不知道这个信号框架的价值在哪。这一次通过一个购物车例子来展示一下这个框架的实际用法,大家可以对比一下这个框架和你们所用框架的优劣。
上一篇MUSingal使用原理介绍https://www.jianshu.com/p/1c11e10aa126

购物车实践

最终效果

car.gif

分析

购物车涉及的需求大概有以下几点

1.从购物车中选择需要下单的商品(全选、多选、单选)
2.购买数量的增减
3.统计(购买商品的数量以及需要支付的价格)
4.优惠券之类的在这里不考虑

单个物品的数量增减

单个物品的增减逻辑一般会写在cell内部,但由于外部需要做统计显示,一般都会采用block或delegate回调到外部控制器。但在这里不需要这么做,signal是可以在controller响应,这也是当前开发这个框架的灵感所在。那么cell里面的代码(大概80多行左右)逻辑如下:


cell内部逻辑.png

控制器的统计显示

逻辑代码(大概50行左右)


controller逻辑.png

至此一个购物车的简单方案就实现了,在此我们没有使用任何的block和delegate,因为不需要。大家可以跟自己之前写的购物车对比一下,看看有什么优劣,可以在评论区讨论。

[MUKit] https://www.jianshu.com/p/3c888ebc6450 系列介绍和源码链接

推荐阅读更多精彩内容