DomainModel的一点感悟

作者: zczhuohuo | 来源:发表于2019-05-19 14:46 被阅读0次

以前简单的了解过关于贫血模型、充血模型的概念,一开始对这些概念也没什么感觉,最近在工作中,逐渐地有了些小感悟,尤其是关于充血模型可以更有效地避免重复代码。一个非常明显的就是 Object 的构造。假设有下面这个类。

class BankAccount {
    private Integer money;
    private Double rate;
}

在贫血模型中,就只有个空的构造函数,然后是一堆的 getter、setter,那么才使用这个类的时候,就不可避免可有一系列的,类似下面的代码。每次需要生产一个 BankAccount 对象是都不可避免地写下面三行代码。

BankAccount account = new BankAccount();
account.setMoney(1024);
account.setRate(0.02);

但是在充血模型中,你会有各种的需要的构造函数,生产一个 BankAccount 对象就只需要一行代码:

BankAccount account = new BankAccount(1024, 0.02);

这样一个简单的转化,代码就变得好看起来的。

再例如,如果你要计算收益,在贫血模型里面的做法可能是这样的,定义一个 AccountService,然后实现计算逻辑:

class  AccountService {
    public Double calAvenue(BankAccount account) {
        return account.getMoney() * account.getRate();
    }
}
// 调用
accountService.calAvenue(account);

但是在充血模型里面,就直接这样实现

class BankAccount {
    public Double avenue() {
        return money * rate;
    }
}
// 使用的话,直接即可
account.avenue();

个人觉得第二中方法比第一种方法简洁、优雅太多了。

虽然上面对某些概念的理解或者解释或许不太正确,但是核心需要说明的是,将 Object 相关的逻辑,在 Object 内部实现,而不是在额外的例如 Servie 层里实现,既消灭的重复代码,也让代码变得更优雅、好看。

相关文章

  • DomainModel的一点感悟

    以前简单的了解过关于贫血模型、充血模型的概念,一开始对这些概念也没什么感觉,最近在工作中,逐渐地有了些小感悟,尤其...

  • ObjectiveSQL(Java ORM) 之MySQL 实战

    第一步,引用Maven依赖: 第二步,使用Annotation 定义一个DomainModel : 第三步:定义C...

  • 读书摘记(五)-极简主义

    一点感悟:

  • 在早期就划定功能上线时间,有助于整体把握

    一点感悟

  • 一点感悟

    昨天的一点感悟

  • 新读论语

    每天一点一点积累,写下自我的感悟!

  • 文笔,是持续地写练出来的

    翻看了一下自己之前的简书发文,有了一点感悟和一点启发。 一点感悟就是,我原来的文笔比现在的好,之前一直坚持写文,自...

  • 感悟一点

    夫妻再怎么嫌弃对方,都会被一句话,一个拥抱感动,一次又一次爱上对方。或许有过一段爱恋,不成,一直活在幻想中,可是再...

  • 一点感悟

    昨天才听某校教授说简书,是不是觉得有点迟,莫名的觉得有点跟不上时代的节奏,略感失败。这点失败源于对新鲜事物的后知后...

  • 一点感悟

    浊世清莲A 感悟,这几日因为想要在家画画,只做短期工,一连得到四家老板的认可,离开时都涨工资或丰厚的条件找我回去,...

网友评论

    本文标题:DomainModel的一点感悟

    本文链接:https://www.haomeiwen.com/subject/zzfqzqtx.html