5
根据得墨'耳(Demeter)的法律,是否允许某类返回其成员之一?
关于德米特定律,我有三个问题。 除了专门指定用于返回对象的类(例如工厂类和构建器类)之外,还可以使用一种方法来返回对象,例如,由该类的一个属性持有的对象,或者会违反demeter(1)的定律。?并且,如果它违反了demeter的定律,那么返回的对象是否是一个不可变的对象(表示一个数据,并且除了该数据的吸气剂之外就什么也不包含)(2a),这会很重要吗?还是这样的ValueObject本身就是反模式,因为使用该类中的数据完成的所有操作都是在类(2b)之外完成的? 用伪代码: class A {} class B { private A a; public A getA() { return this.a; } } class C { private B b; private X x; public void main() { // Is it okay for B.getA to exist? A a = this.b.getA(); a.doSomething(); x.doSomethingElse(a); } } 我怀疑得墨meter耳的定律禁止这种模式。我该怎么做才能确保doSomethingElse()在不违反法律的情况下可以被调用(3)?