iOS 类似于 Whatsapp 的应用程序中的 MVC 设计
MVC design in iOS application similar to Whatsapp
我一直在开发类似于 Whatsapp 的应用程序(当然具有其特殊功能),现在我认为我应该重构所有现有代码以使其符合 MVC 设计模式(因为胶水代码过多)。
如果我将我的应用程序分解为一些简单的东西,我们将有:
- First Message:
- ID
- Any Unread Message
- Source User
- Target User
- Normal Message:
- ID
- First Message (weak reference)
- Received State (Got to server/Got to client/Read by client)
- Am i owner of message (am I source)
- Date
- User:
- ID
- Phone Number
- Profile Image Link
请注意,如果有任何用户未阅读的消息,"Any Unread Message" 应该打开。只是服务器的优化。
我从来没有真正正确地使用过 MVC 设计模式,所以我想确保我的计划是正确的,或者也许有 additional/other 我应该做的事情。
我在想:
- Model:
- Create a Core-Data xcdatamodel file which will hold the above entities
- Use the library mogenerator to generate entity files from the core-data model
- Create Data-Models for each operation. for example: Register Data-Model which will handle all the registration api with the server;
Message Data-Model which will handle sending a new message and
retrieving new messages; etc. All of these will be singleton.
- View:
- all the views of whatsapp like outer UITableViewController (to display unique users) and inner UITableViewController (to display
messages from a specific user).
- Controller:
- uses some of the above data models to fetch new data explicitly
我正在考虑将 API 从模型提供给控制器,它可以显式使用它,但不使用通知或键值观察设计。
我还没有找到任何在线教程或文档来说明更好的做法。
有什么建议吗?
好吧,通过坚持理论——在模型和控制器之间使用通知,在视图和控制器之间使用 KVO,我成功地在我的项目中实现了 MVC 设计模式。
:)
我一直在开发类似于 Whatsapp 的应用程序(当然具有其特殊功能),现在我认为我应该重构所有现有代码以使其符合 MVC 设计模式(因为胶水代码过多)。
如果我将我的应用程序分解为一些简单的东西,我们将有:
- First Message:
- ID
- Any Unread Message
- Source User
- Target User
- Normal Message:
- ID
- First Message (weak reference)
- Received State (Got to server/Got to client/Read by client)
- Am i owner of message (am I source)
- Date
- User:
- ID
- Phone Number
- Profile Image Link
请注意,如果有任何用户未阅读的消息,"Any Unread Message" 应该打开。只是服务器的优化。
我从来没有真正正确地使用过 MVC 设计模式,所以我想确保我的计划是正确的,或者也许有 additional/other 我应该做的事情。
我在想:
- Model:
- Create a Core-Data xcdatamodel file which will hold the above entities
- Use the library mogenerator to generate entity files from the core-data model
- Create Data-Models for each operation. for example: Register Data-Model which will handle all the registration api with the server; Message Data-Model which will handle sending a new message and retrieving new messages; etc. All of these will be singleton.
- View:
- all the views of whatsapp like outer UITableViewController (to display unique users) and inner UITableViewController (to display messages from a specific user).
- Controller:
- uses some of the above data models to fetch new data explicitly
我正在考虑将 API 从模型提供给控制器,它可以显式使用它,但不使用通知或键值观察设计。
我还没有找到任何在线教程或文档来说明更好的做法。
有什么建议吗?
好吧,通过坚持理论——在模型和控制器之间使用通知,在视图和控制器之间使用 KVO,我成功地在我的项目中实现了 MVC 设计模式。
:)