1

我读了一些关于得墨忒耳法则的文章,这让我很困惑。

它指出这样的事情:

var width = mapControl.get_mapState().getMapRange().getSize().get_width();

应该换成这样:

var mapState = mapControl.get_mapState();
var mapRange = mapState.get_mapRange();
var width = mapRange.get_width()

我在这里有点困惑,因为后一个与第一个相同,但写法不同。在这两种情况下,我最终都会访问不是我当前班级的直接朋友的“宽度”。

那么为什么第二种方式真的更好呢?

4

1 回答 1

1

我在这里有点困惑,因为后一个与第一个相同,但写法不同。在这两种情况下,我最终都会访问不是我当前班级的直接朋友的“宽度”。

那么为什么第二种方式真的更好呢?

这并不是真的更好。Demeter 法则的方法是重构代码,因此客户端代码如下所示:

var width = mapControl.get_width();

在这种情况下,客户端代码不需要知道 mapControl 有一个“状态”,它有一个“范围”,它有一个“宽度”。它只需要知道它暴露了一个“宽度”。

于 2015-08-31T15:07:20.230 回答