鉴于对API /公共方法签名的更改应尽可能少,以防止破坏使用这些方法的客户端代码,我想知道Demeter法则是否不适用于这些方法。
一个简单的例子:
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
请注意,借记方法传递的是交易对象,而不是仅仅两倍的金额(据我所知,``德米特尔法则''会说只传递所需的信息,在这种情况下,只是传递金额,而不是交易对象... )。其背后的原因是因为将来该方法可能需要除数量之外的其他一些交易属性。据我了解,这将防止将来通过添加新参数来破坏方法签名。
那么,这是否使之成为明智的选择?还是我错过了什么?