如何解决DAO和SOLID设计原则
我一直在阅读有关SOLID设计原则的信息,目前正在研究“单一职责原则”,但是我对该原则的用例感到好奇。在我工作的公司中,我们有DAO,它们具有read
,insert
和update
方法来管理数据库中的记录。
这样的事情会打破“单一责任原则”吗?如果是这样,那么您是否需要为每个插入,读取和更新类?
示例DAO:
class UserDAO {
public function read(where: object) {
// read code
}
public function insert(user: User) {
// insert code
}
public function update(user: User) {
// update code
}
}
解决方法
单一责任原则指出
一个班级只有一个改变的理由。
假设我们有 UserDAO ,其中包含读取,保存,删除和更新方法。因此,只有在与用户相关的更改时,此类才会更改。因此,它有一个更改的唯一原因,即用户。
因此,我认为,如果实施正确,它不会违反SRP(单一责任原则)。
void save(User user){
//user related logic
}
void save(User user){
// user related logic and address logic encapsulated inside address class
//eg: address.getAddress(user.getId);
}
在上述情况下,它不会违反SRP,因为仅在用户逻辑发生更改时才会更改save方法。地址逻辑本身由Address类处理。
例如:如果保存方法如下:
void save(User user){
Address address = new Address();
//Address logic
Payment payment = new Payment();
//Payment logic
}
在上面的代码中,地址或付款逻辑中的任何更改都会使此DAO保存方法也发生更改。它违反了SRP。
所以,这实际上取决于实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。