c# - 如何将接口(interface)与实现分离

标签 c# .net design-patterns

是否可以将接口(interface)与实现分开,其中客户端程序集不知道实际的实现并且仅在接口(interface)上工作。如果我们将对象创建卸载到另一个组件,它仍然会创建对实际实现类型的依赖。

我可以考虑使用反射来做到这一点,其中一个层负责为被转换为接口(interface)的对象提供服务。类型的实际实例化是通过反射完成的,并存储在字典中,其中键是接口(interface),值是实现对象。这样客户端代码就不知道实现的类型。

是否有一种设计模式可以在不进行反射的情况下执行此操作?

提前感谢您的回答

最佳答案

反射在动态分配场景中很有用,例如基于插件的系统。如果您不想管理这种环境,只需在代码中声明所有实现并仅在消费者中使用接口(interface)即可。

问题是,在这两种情况下,在某些时候都必须有“某人”来决定创建哪种真实类型。在基于插件的逻辑的情况下,它可能是 PluginManager,在其他情况下可能是一些 factory 方法/类。

设计模式为IoC ,如果您对此不感兴趣。

希望这有帮助

关于c# - 如何将接口(interface)与实现分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890831/

相关文章:

c# - 在 Winforms C# 中编辑 Appsettings

c# - 如何在避免间接调用的同时编写泛型代码?

c# - 在 Visual Studio 2017 中设置默认的 C# 构建语言版本

c# - 如何从 C# 中的 .h 文件中读取常量

c# - 部分类的静态字段初始化顺序

Java方法构造重复结构且变化较小

string - 用于模式数组的 Powershell 搜索字符串

design-patterns - DDD : Saving Changes to Model and accessing Repository

c# - 绑定(bind)导航器中缺少保存按钮

C# 子类,同时保持名称。深巫术?