2011-05-03 106 views
1

我正在开发使用Objective-C和Xcode 4的Mac OS X应用程序,并希望找到处理数据访问和承担业务逻辑任务而不必使用CoreData的最佳方式。在Mac OS X应用程序中是否可以使用DAL和BLL图层?

我从一个.NET MVC背景,通常会通过一个服务层(使用存储库模式),以返回可以映射到我的查看数据有我的控制器调用。这将以类似于传统业务逻辑和数据访问层的方式工作。

但是在Mac上我的大部分阅读提示我的模型和控制器应共享与数据填充模型的责任和承接业务和验证逻辑。

这在我看来有点严格,违背了DRY原则,因为我可能需要重复一些数据接入/业务逻辑操作的其他车型从而不必再编写代码THA相同的位。

因此是可行的有一组承接业务/数据访问逻辑(到SQLite数据库),其然后可以从任何控制器称为类或外部库?因此,该模型将只包含有关其自身和验证逻辑的数据?或者这是否违背了核心MVC原则以及在Mac上构建应用程序的方式?

回答

1

是否有特殊原因不能在这种情况下使用核心数据?它针对本地文件系统持久存储对象进行了高度优化。它还在模型级进行验证,仿佛一切都被存储在模型类你怎么去得到项目的集合,从数据库,即用户的列表导致缓存,通知等

+0

不仅仅是我的背景是在.NET中构建使用数据库和构建多层应用程序的系统。我已经知道如何做到这一点,只是想将它应用到Cocoa,而不是学习一个新的对象图框架,这将延长已经紧张的项目期限。当我第一次开始开发时,我确实研究过这个问题,但是找不到我想要的关于这个主题的任何好的教程。即用模型等展示CRUD操作。谢谢 – Cragly 2011-05-03 20:10:18

+0

我强烈建议再看看CoreData,因为您需要自己构建这些功能,这需要时间。只有少数情况下使用它没有意义。 – 2011-05-03 21:38:25

+0

已经决定和CoreData一起玩了一遍。正如你所说的那样,它的高度优化和初步陡峭的学习曲线之后,它非常值得。 – Cragly 2011-05-22 13:41:18

0

你所描述的对我来说听起来像个好主意。把你的验证和业务逻辑放在你的模型类中是正确使用MVC,并且将数据存储在一个sqlite数据库中(模型类与之交谈)也是一种常用的方法。

我不确定我们是否与术语在同一页面上:如果您使用该设计,那么您的类将执行业务/数据访问逻辑(对于sqlite数据库),然后可以从任何控制器“其实模型类。

+0

那是什么问题?用户模型类根据标准从数据库中获取用户列表似乎不正确?但是,如果这个功能不属于模型类,而是属于一个控制器,那么我可能在想要获取用户列表的其他控制器中存在代码重复。希望这是有道理的。 – Cragly 2011-05-03 18:10:46

+1

你可以有一个单独的类来获取,就像一个单例一样。要使用它(从你的控制器),你需要提供一些参数,并返回一堆你的模型对象。因此,没有代码重复,因为任何需要获取用户的控制器都可以与单例交谈。或者,只需在获取数据的User类上创建类方法(而不是实例方法),然后创建并实例化User对象。这两种方法都可以在Apple API中找到。 – 2011-05-03 23:37:42

相关问题