是否可以将接口(interface)与实现分开,其中客户端程序集不知道实际的实现并且仅在接口(interface)上工作。如果我们将对象创建卸载到另一个组件,它仍然会创建对实际实现类型的依赖。
我可以考虑使用反射来做到这一点,其中一个层负责为被转换为接口(interface)的对象提供服务。类型的实际实例化是通过反射完成的,并存储在字典中,其中键是接口(interface),值是实现对象。这样客户端代码就不知道实现的类型。
是否有一种设计模式可以在不进行反射的情况下执行此操作?
提前感谢您的回答
最佳答案
反射在动态分配场景中很有用,例如基于插件的系统。如果您不想管理这种环境,只需在代码中声明所有实现并仅在消费者中使用接口(interface)即可。
问题是,在这两种情况下,在某些时候都必须有“某人”来决定创建哪种真实类型。在基于插件的逻辑的情况下,它可能是 PluginManager
,在其他情况下可能是一些 factory
方法/类。
设计模式为IoC ,如果您对此不感兴趣。
希望这有帮助
关于c# - 如何将接口(interface)与实现分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890831/