我在试着理解德米特定律。这个例子(取自名为“务实程序员”的书)混淆了me.The任务,目的是根据德米特定律确定是否允许显示的方法调用。
public void showBalance(BankAccount acct) {
Money amt = acct. getBalance() ;
printToScreen(amt .printFormat()) ;
}作为对这一任务的回应,它被写成违反了德米特定律,但我不明白为什么?根据Demeter定律,对象O的方法M只应调用以下方法:
对象O本身的yourself)
对象的参数的对象的
中本地创建的对象的
对象amt是在方法showBalance(BankAccount acct)中本地创建的,我们在该对象上调用方法getBalance(),这是规则4允许的,这就是让我困惑的地方。
发布于 2020-07-17 14:36:06
对象amt不是在showBalance中创建的-您可以通过对getBalance的方法调用来检索它。
你不能仅仅通过提取局部变量的值来绕过Demeter定律,它需要仔细的设计。您的代码与此等价,LoD应禁止此代码:
printToScreen(acct.getBalance().printFormat());https://stackoverflow.com/questions/62955749
复制相似问题