我有一个“采购订单”的课程。它包含有关单个采购订单的信息。我有一个用于数据库方法的DAO类。
加载和更新采购订单的方法的责任应该在哪里?
PurchaseOrder类是否应具有直接使用DAO类的“.update”、“insert”、“delete”和“.load”方法,或者PurchaseOrder类是否应忽略DAO方法并具有管理这些交互的POController类?
用户一次只能在一个PurchaseOrder上工作。
谢谢!
发布于 2008-10-03 15:13:04
采购订单应该忽略其持久性的细节。这就是拥有某种类型的数据访问层的意义所在,它处理对象的管理,并且对象本身可以专注于仅仅是一个购买订单。
这也使系统更易于测试,因为您可以创建模拟采购订单并测试系统如何处理它们的逻辑,而不会陷入持久性问题。
发布于 2008-10-03 15:42:08
为了简单起见,我将PurchaseOrder作为接口,并将所有DAO代码放在实现中,然后使用工厂。
发布于 2008-10-03 15:17:05
这取决于您认为您的应用程序将存在多长时间。我公司的金属切割应用程序自1985年以来一直在不断开发,并通过计算机体系结构的多次变化进行了移植。在我们的例子中,我们几乎总是把东西推到接口(或者使用你的术语的控制器类)后面,因为我们不知道5年、10年、15年后的情况。
通过使用控制器类,我们可以更改底层API,而不会篡改上面的业务逻辑级别和UI调整。这些级别代表多年的工作,因此保留他们的行为是很重要的。
记住,在你的项目生命周期的大部分时间里,你的项目都处于维护阶段。您现在所做的任何事情都将在以后更容易地更改设计,从而节省大量的时间。
https://stackoverflow.com/questions/167330
复制相似问题