【发布时间】:2012-12-22 21:34:38
【问题描述】:
demeter 定律说对象不能从对象 A 调用对象 B 的方法 M。 但它也适用于属性吗?例子?
public class B{
public bool IsValid();
}
public class A{
public B B{get;set;}
}
我可以这样做吗?
var isValid = new A().B.IsValid()
或者我应该这样做:
public class B{
public bool IsValid();
}
public class A{
private B B{get;set;}
public bool IsValid(){
return B.IsValid();
}
}
var result = new A().IsValid();
如果我从 A 访问 B 的方法,是否有问题(根据法律)?
【问题讨论】:
-
在您的 2d 示例中,它看起来
B的实例由A在其中创建。在您的第一个示例中,它是一个公共属性,可以通过它设置B。您的确切情况是什么,以便您有必要致电A.B.IsValid而不是B.IsValid?在您的第二个示例中,get可以是公开的。
标签: c# design-patterns law-of-demeter