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

2017-07-15 12:21:35 +08:00
 summer1991
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 数据。

求问这种写法有什么问题?
1379 次点击
所在节点    问与答
2 条回复
loveuqian
2017-07-15 14:56:32 +08:00
这个 app 没有后台的吗?
queuey
2017-07-15 15:11:17 +08:00
1.看你这需求 Service 并没有写成单例的必要
2.既然 service 全部为类方法,为何不考虑给每个业务实体增加一个 category,专门用来提供可视数据。
3.如果你的数据全部通过 service 来调用,为何 bookList 设置成 Mutable,而不是 NSArray,属性为 readonly。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375522

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX