我正在使用Objective-C和Xcode 4开发Mac OS X应用程序,并希望找到处理数据访问和执行业务逻辑任务的最佳方法,而无需使用CoreData。
我来自.NET MVC背景,通常会让我的控制器调用服务层(使用存储库模式)来返回可以映射到我的View的数据。这将以与传统业务逻辑和数据访问层类似的方式工作。
然而,在Mac上,我的大部分阅读建议我的模型和控制器应该分担使用数据填充模型的责任,并承担业务和验证逻辑。
这在我看来有点限制并违反DRY原则,因为我可能需要在其他模型中重复一些数据访问/业务逻辑操作,因此必须再次编写相同的代码。
因此,拥有一组可以从任何控制器调用的业务/数据访问逻辑(到SQLite数据库)的类或外部库是否可行?因此,模型只包含有关自身和验证逻辑的数据?或者这违反了MVC的核心原则和在Mac上构建应用程序的方法?
答案 0 :(得分:1)
在这种情况下,是否有特殊原因不使用Core Data?它针对持久化对象进出本地文件系统进行了高度优化。它还在模型级别执行验证,结果缓存,通知等。
答案 1 :(得分:0)
你所描述的对我来说听起来不错。将验证和业务逻辑放在模型类中是正确使用MVC,并且将数据存储在sqlite数据库(模型类与之交谈)中也是一种常用的方法。
我不确定我们是否与术语在同一页面上:如果你使用那个设计,你的类“承担业务/数据访问逻辑(到sqlite数据库),然后可以从任何控制器调用”实际上是模型类。