作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有可能将接口(interface)与实现分开,在这种情况下,客户端程序集不知道实际的实现并且只在接口(interface)上工作。如果我们将对象创建卸载到另一个组件,它仍然会创建对实际实现类型的依赖。
我可以考虑使用反射来做到这一点,其中一个层负责为被转换为接口(interface)的对象提供服务。类型的实际实例化是通过反射完成的,并存储在字典中,其中键是接口(interface),值是实现对象。这样客户端代码就不知道实现的类型。
是否有一种设计模式可以在不进行反射的情况下做到这一点?
预先感谢您的回答
最佳答案
反射在动态 分配场景中很有用,例如在基于插件的系统中。如果您不想管理那种环境,只需在代码中声明所有实现并在消费者中仅使用接口(interface)。
问题是,在这两种情况下,在某些时候必须有“某人”决定创建哪种真实类型。在基于插件的逻辑的情况下,它可能是 PluginManager
,在其他情况下可能是一些 factory
方法/calss。
设计模式是IoC ,如果您对此不感兴趣。
希望对你有帮助
关于c# - 如何将接口(interface)与实现分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890831/
我是一名优秀的程序员,十分优秀!