微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 注入具有与更高级别类相同的构造函数参数的依赖项

有时当我设计我的类时,我需要一些具有类似构造函数参数的依赖类.假设我们有
interface IDependency {
    void DoSomething();
}

class DependencyClass : IDependency {
    public DependencyClass(int length) {...}
    ...
}

class MainClass {
    public MainClass(int length,IDependency dependency) {...}
    ...
}

MainClass需要具有相同长度的DependencyClass实例.我有两种方法来处理它:

>不直接创建MainClass实例并始终从工厂获取它们.这样我就可以确保将所需的IDependency实例提供给MainClass构造函数.
>将工厂接口(例如IDependencyFactory)传递给MainClass构造函数而不是IDependency.这样我就可以在MainClass实现中获得所需的DependencyClass实例.

我不确定他们中的任何一个是不是一个好选择.在这种情况下是否有最佳做法?

解决方法

这是一个非常有趣的问题,答案在于你试图在这里实现的目标.

解决方案1.您提供的将使您的IDependency成为主工厂接口,所有实例都将使用IDependency接口实现,这将为您提供大量可伸缩性 – 您将能够使用IDependency接口在未来初始化其他类功能,这是工厂设计模式的经典使用和实现.

解决方案2.您提供的将使您的MainClass很好,程序的主类,您将处理主类中的实例及其行为,这里的优点是您可以通过IDependency管理所有实例,并且唯一的事情你在MainClass中处理它们的逻辑,MinaClass将是你的实例转换器,基类的所有基本更改都将在接口IDependency中进行,这是Dependency Inversion的经典解决方案.

问题仍然存在,你想要实现的目标.考虑这个问题和两种可能性,你有答案.

原文地址:https://www.jb51.cc/csharp/92026.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐