我读了一篇关于得墨忒耳法的文章,让我感到困惑。
它说明了这样的事情:
var width = mapControl.get_mapState().getMapRange().getSize().get_width();
应该替换为:
var mapState = mapControl.get_mapState();
var mapRange = mapState.get_mapRange();
var width = mapRange.get_width()
我在这里有点困惑,因为后者与第一个相同,但写的不同。在这两种情况下,我最终都访问“宽度”,这不是我当前班级的直接朋友。
那为什么第二种方式真的更好?
答案 0 :(得分:1)
我在这里有点混淆,因为后者与第一个相同,但写的不同。在这两种情况下,我最终都会访问" width"这不是我现在班上的直接朋友。
那为什么第二种方式真的更好?
它并不是更好。 Demeter法则是重构代码,因此客户端代码如下所示:
var width = mapControl.get_width();
在这种情况下,客户端代码不需要知道mapControl具有"状态",其具有"范围",其宽度为"" #34 ;.它只需要知道它暴露了宽度"。