标签:
http://www.cnblogs.com/loying/p/4801194.html
接着上一版 的架构。
问题1:
model要不要监听事件?
目前,Model需要被改变的时候是:
1、viewController请求数据时候;
2、message发生变化的时候;(比如说登陆、注销、商店切换)
目前的坏处:
message处,有各个model的代码;
[self lyPostNotification:NOTIFY_INDEX_DATA];
[[CartModel instance] onShopChange];
[[CategoryDetailModel instance] onShopChange];
[[ServiceModel instance] onShopChange];
比如说切换商店后,就有这些变换;
[self lyPostNotification:NOTIFY_USER_LOGOUT];
[[CartModel instance] clearCache];
[[AddressModel instance] clearCache];
[[UserModel instance] clearCache];
[[OrderModel instance] clearCache];
登出后,需要把这些Model清空;
如果新增model比如说新添加的serviceModel,需要在message处添加相应的逻辑代码;
还有的问题是,Model的clearCache等函数被message调用,耦合性特别强;相当于做了事情A(登出),接着马上做事情B(清空数据),而且是直接调用,以后修改起来很容易犯错误。
设想:
如果model监听事件的话;
那么model只需监听各个事件,然后再写处理函数;
model的逻辑都聚合在自身;
带来的后果是,model稍微变大。多个事件,和多个处理函数。
不过这个如果是message处来调用,处理函数还是一样要写,只是多了事件处理监听的代码。
model的逻辑是聚合了,但是注销的逻辑分散了,看不出来注销完干了什么事情。这个问题好像也不是问题,因为可以查看事件的监听者,看到监听了注销事件的model。
有一处代码,集合了所有的model instance。所有的model都必须先初始化。否则无法监听事件。
问题2:调用message的时候,message从各个model获取了数据,那么,谁来做参数检查?
1,谁调用(不同层次之间),谁负责检查参数;比如orderMessage需要用户登录,那么调用orderMessage的时候,就必须保证已经登录。(因为message和model不在同一层次)
2,如果是检查的内容是自身内容,那么由自己负责。
问题3:从页面A (ControllerA) 跳到 页面B(ControllerB),用户的操作数据(比如说留言),怎么合适地从A传到B?
IOS 电商类app 第一版架构 改进
标签:
原文地址:http://www.cnblogs.com/loying/p/4868331.html