gpt4 book ai didi

law-of-demeter - 被动观点是否违反了迪米特法则?

转载 作者:行者123 更新时间:2023-12-02 07:17:14 25 4
gpt4 key购买 nike

我正在尝试了解如何正确使用被动 View 。在我看来,我在被动 View 上看到的每个例子都违反了德米特法则:

//In the presenter code
myview.mytextfield.text = "whatever";

那么被动 View 的更好实现是什么?

最佳答案

首先,与大多数编程规则一样,德墨忒尔定律更多的是一种原则或指南,有时该原则并不适用。话虽这么说,德米特定律并不真正适用于被动 View ,因为在这种情况下,该定律的原因不是问题。

德米特定律试图防止依赖链,例如:

objectA.objectB.objectC.DoSomething();

显然,如果objectB的实现更改为使用objectD,那么它将破坏objectA的依赖关系并导致编译错误。如果采取极端的做法,那么每当链条因实现更改而受到干扰时,您都会进行猎枪手术。

对于被动 View

  • 演示者依赖于接口(interface),因此只要接口(interface)保持不变, View 的实现就可以更改。
  • View 通常将属性公开为通用数据类型,例如系统类型和集合。这样您就可以更改 UI,而不会影响演示者。
  • 对于演示者来说, View 只不过是一个数据结构,一个检索和转储数据的地方。由于 View 非常简单,演示者甚至不应该能够进行依赖链。

所以你给出的例子通常会被实现:

//from presenter
view.MeaningfulName = "data";

虽然 View 会是这样的:

//from view
public string MeaninfulName
{
get
{
return someControl.text;
}
set
{
someControl.text = value;
}

希望这能澄清一些事情。

关于law-of-demeter - 被动观点是否违反了迪米特法则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com