首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德米特定律与函数的局部变量

德米特定律与函数的局部变量
EN

Stack Overflow用户
提问于 2020-07-17 14:08:24
回答 1查看 94关注 0票数 0

我在试着理解德米特定律。这个例子(取自名为“务实程序员”的书)混淆了me.The任务,目的是根据德米特定律确定是否允许显示的方法调用。

代码语言:javascript
复制
public void showBalance(BankAccount acct) {
Money amt = acct. getBalance() ;
printToScreen(amt .printFormat()) ;
}

作为对这一任务的回应,它被写成违反了德米特定律,但我不明白为什么?根据Demeter定律,对象O的方法M只应调用以下方法:

对象O本身的yourself)

  • Methods

  • 方法(因为您可以与传递给M

对象的参数的对象的

  1. 方法进行交谈,例如,在静态字段的方法M
  2. 方法

中本地创建的对象的

  1. 方法)。

对象amt是在方法showBalance(BankAccount acct)中本地创建的,我们在该对象上调用方法getBalance(),这是规则4允许的,这就是让我困惑的地方。

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 14:36:06

对象amt不是在showBalance中创建的-您可以通过对getBalance的方法调用来检索它。

你不能仅仅通过提取局部变量的值来绕过Demeter定律,它需要仔细的设计。您的代码与此等价,LoD应禁止此代码:

代码语言:javascript
复制
printToScreen(acct.getBalance().printFormat());
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62955749

复制
相关文章

相似问题

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