V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
summer1991
V2EX  ›  问与答

App 中这样的 Model 结构有什么问题?

  •  
  •   summer1991 · 2017-07-15 12:21:35 +08:00 · 1491 次点击
    这是一个创建于 2689 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Model
    
    - Entity (具体的业务实体,如 User,Friend,Book)
    
    - MemoryCache (单例类,存储所有的内存数据,但不做任何数据相关操作)
    @property (nonatomic, strong) User *accountUser, 
    @property (nonatomic, strong) NSMutableArray<Friend *> *friendList;
    @property (nonatomic, strong) NSMutableArray<Book *> *bookList;
      
    - Service (具体的业务类,全部为静态方法)
    UserService (+ userId,  + userName, + userCoin, + requestModifyName)
    FriendService(+ addFriend, + deleteFriend, + requestFriendList)
    BookService(+ buyBook, + deleteBook)
    
    我将数据全部存储在 MemoryCache 中,这样就可以做到应用中仅有一个单例存储内存数据,Service 中全是静态方法,VC 调用 Service 层。当账户切换时,可以将全部数据直接清空。
    
    如果每个 service 写成一个单例,那么比如 buyBook 之后 扣除 accountUser 中的金币,就会涉及单例调用另一个单例的情况。我认为这种调用多了之后比较混乱。如果是我这种做法,就可以直接在 BookService 中操作 accountUser 数据。
    
    求问这种写法有什么问题?
    
    2 条回复    2017-07-15 15:11:17 +08:00
    loveuqian
        1
    loveuqian  
       2017-07-15 14:56:32 +08:00
    这个 app 没有后台的吗?
    queuey
        2
    queuey  
       2017-07-15 15:11:17 +08:00
    1.看你这需求 Service 并没有写成单例的必要
    2.既然 service 全部为类方法,为何不考虑给每个业务实体增加一个 category,专门用来提供可视数据。
    3.如果你的数据全部通过 service 来调用,为何 bookList 设置成 Mutable,而不是 NSArray,属性为 readonly。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:51 · PVG 19:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.