首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAOs与实体设计原则

DAOs与实体设计原则
EN

Stack Overflow用户
提问于 2020-09-26 11:23:01
回答 1查看 336关注 0票数 0

我一直在阅读有关实体设计原则的文章,目前正在研究“单响应原则”,但是我对这个原则的用例很好奇。在我工作的公司,我们有DAOs,它有readinsertupdate方法来管理数据库中的记录。

这样的事情会破坏“单一责任原则”吗?如果是这样的话,那么您是否需要每个插入、读取和更新的类?

示例DAO:

代码语言:javascript
复制
class UserDAO {
    public function read(where: object) {
        // read code
    }

    public function insert(user: User) {
        // insert code
    }

    public function update(user: User) {
        // update code
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-26 11:30:18

单一责任原则规定:

类必须只有一个改变的理由。

假设我们有UserDAO的方法--读取、保存、删除、更新。因此,只有在发生与用户相关的更改时,才会更改该类。因此,它有一个改变的唯一原因,即用户。

因此,如果正确实施,我认为这并不违反SRP (单责任原则)。

代码语言:javascript
复制
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,因为只有当用户逻辑发生更改时,保存方法才会被更改。地址逻辑由address类本身处理。

如果保存方法看起来像:

代码语言:javascript
复制
void save(User user){
Address address = new Address();
 //Address logic
 Payment payment = new Payment();
 //Payment logic
}

在上述代码中,地址或支付逻辑中的任何更改都将使DAO保存方法也发生变化。这违反了SRP。

因此,这取决于具体的实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64077085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档