[关闭]
@buoge 2017-09-30T12:00:50.000000Z 字数 962 阅读 821

Delegate Target-Action VS Notification 一点感触

程序构建


下面的场景是源于购物车的一次需求修改:

  1. if (isSuccess) {
  2. let successMsg = isFromCart ? "修改购物车成功!" : "添加到购物车成功!"
  3. if (isFromCart) {
  4. let dissmissConfirmClosure = { [weak self]() -> Void in
  5. self?.dismissModalVC()
  6. self?.loadingVCInParentVC?.dismissLoading(loadingType: LoadingType.Small)
  7. SVProgressHUD.showSuccess(withStatus: successMsg)
  8. }
  9. cartListDelegate?.reloadDataAfterSkuChange(dissmissConfirmClosure)
  10. }else{
  11. loadingVCInParentVC?.dismissLoading(loadingType: LoadingType.Small)
  12. SVProgressHUD.showSuccess(withStatus: successMsg)
  13. NavBarView.sendCartCountChangedNotification(amount)
  14. if (buyActionCartView?.bottomMenuConfirmMode ?? false) {
  15. confirmContainer?.hiddeView()
  16. }
  17. }
  18. }

delegate target-action 已经不适应,此时需要通知

上述代码 CartListDelegate 是在弹层中触发修改后,通知购物车列表刷新,第一版实现的方式是delegate,但是使用CartListDelegate target-action 的方式在之前已有一个购物车页面的时候还算ok,后续,购物车列表在首页也要出现,现在他们就不是1对1的模式了,编程了2对一,此时使用delegate 就不使用了,
此时最合适的方式是通知,通过通知解耦,两个业务实体之间的关联,降低复杂度

Interesting

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注