所以在数据传输对象中应该只有setter和getter。但是如何处理从数据传输对象中插入和删除对象呢?
public class dto{
setters and getters...
..
..
public void delete(){
CustomreDao.delete(this.ID);
}
}
会不会违背 DAO 模式本身?
提前致谢。
所以在数据传输对象中应该只有setter和getter。但是如何处理从数据传输对象中插入和删除对象呢?
public class dto{
setters and getters...
..
..
public void delete(){
CustomreDao.delete(this.ID);
}
}
会不会违背 DAO 模式本身?
提前致谢。
问问自己这个问题:“更新 DAO 的删除方法有多难?” 如果您有很多 DTO,并且突然需要更改 DAO,那么这就是您为自己创建的大量工作。
将 DTO 连接到 DAO 的责任留给其他东西,在那里您可以从单点控制交互。
这是面向对象语言的设计原则。根据单一职责原则,每个班级应该只有一个职责。DTO 类的职责是存储用于传输目的的数据。它不应该像您在示例中那样具有任何行为。
数据传输对象只是用于在层和层之间传输数据的数据容器。它主要包含属性,您甚至可以使用没有getter和setter的公共属性。数据传输对象不包含任何业务逻辑。
DTO 除了存储和检索自己的数据(访问器和修改器)之外没有任何行为。
我认为答案是肯定的——这违反了 DAO 模式。
数据访问对象模式是关于封装对对象存储的访问。
您甚至可以根本不使用数据传输对象。
你在说什么 - 在业务对象本身中有方法是我更喜欢的 Active Record 模式。
您甚至可以同时使用这两种方法 - 例如,使用 CustomerDao 作为通过数据库实现数据访问的一种方式,但使用 ActiveRecord 来获得方便的接口:
customer.save();
anotherCustomer = Customer.find(id);
这些方法可以在内部使用 CustomerDao。
我相信 DTO 被不同的复杂框架使用,如果你可以避免使用它 - 你可以直接使用而不需要额外的 DTO 层。