【问题标题】:pass interface to itself is bad practice?将接口传递给自身是不好的做法?
【发布时间】:2023-03-05 02:15:01
【问题描述】:

通过接口上的方法将接口传递给自身会被认为是不好的吗? 对我来说,这似乎是一种不好的做法,但如果有人可以提供帮助,那就太好了?

一个例子

ISomeInterface someInterface1 = new SomeObject1();
ISomeInterface someInterface2 = new SomeObject2();

var someReturnedValue = someInterface.DoSomeWork(someInterface2);

【问题讨论】:

  • 你的意思是传递自身还是同类型的对象?
  • 我觉得你的问题太笼统了。您能否提供一个您想要执行此操作的具体示例?
  • 它可以是相同类型或不同类型。

标签: c# oop interface decoupling


【解决方案1】:

这是一个完全符合我们要求的示例:

public interface ITree
{
    void AddSubTree(ITree subTree);
}

所以是的,您可能需要这样做。

编辑:

为了完整起见,您可能还想将一个对象与自身一起使用:

public class NetworkInterface
{
    public void ConnectTo(NetworkInterface otherInterface)
    {
    }
}

...

NetworkInterface localhost = new NetworkInterface();
localhost.ConnectTo(localhost);

【讨论】:

  • 使用这种逻辑背后的原因是为了避免使用的原始逻辑是将两个对象传递给一个方法并让被调用的方法确定传入两个对象的哪个组合。导致 long被调用方法中的 if-else 语句。
  • 你有具体的例子吗?因为似乎你可以用 inheritance 来做到这一点,如果你想要的是 double-dispatch.
【解决方案2】:

这取决于你用它做什么。 如果您知道自己在做什么,那很好,如果您不知道自己在做什么,请尝试创建一个原型,看看您的设计是否可行。

作为一般准则,在其内部使用相同的界面并不是一个坏习惯。

复合模式和装饰器模式给出了在自身内部使用相同接口对象的接口的好例子。

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 2020-06-19
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多