• IOS 电商类app 第一版架构 改进


    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?
     
     
     
    这个是1.5版本架构具体的实现,参考两个概念MVP MVVM。
    让显示逻辑和业务逻辑有所分开,是比较重要的。
    待完成微信端的开发,再来写一版详细的改动日志。 
     
  • 相关阅读:
    Linux的学习--系统目录
    PHP内核的学习--创建PHP扩展
    PHP的学习--连接MySQL的三种方式
    MIME Type
    颜色的命名
    JavaScript的学习--生成二维码
    MySQL的学习--触发器
    Google Guava之--cache
    java代码调用oracle存储过程
    oracle序列
  • 原文地址:https://www.cnblogs.com/loying/p/4868331.html
Copyright © 2020-2023  润新知