【发布时间】:2013-02-16 04:18:38
【问题描述】:
我正在开发一个按以下方式拆分的应用程序(有点简化)
App
|
Framework
|
Data (Persistance)
|
Data.Couchbase
在 App 内部,我们正在设置 DI 容器并注册在需要特定接口时将使用哪些具体实现。
即Data 命名空间中的 IUserRepository 将由 Data.Couchbase 命名空间中的 CouchbaseUserRepository 完成。将来如果我们用另一种技术(比如 Mongo)替换持久层,我们可以更新 DI 注册,它会通过 MongoUserRepository 来实现
一切顺利……
问题 1
提供跨系统边界的接口有一个明显的好处,但是在 Data.Couchbase 命名空间本身呢。如果 ICouchbaseUserRepository 接口本身不提供任何额外的功能,那么它有什么意义吗?好像我们注册 IUserRepository -> CouchbaseUserRepository 就足够了?在具体实现中类似的是,将这些组件进一步拆分为可能不会被换出的接口是否有任何意义
问题 2
同样值得在 Framework 中拥有一堆接口,它们的唯一目的是代理 Data 中的接口,因此 App 可以仅依赖于 Framework 而不必依赖于 Data。我可以看到优势......实际上也许我不能......看起来我们将在框架中拥有数百个接口,因此我们可以依赖“数据”,特别是如果这些程序集生活在同一个罐子里
干杯
【问题讨论】:
-
一个问题中的两个问题可能会遇到一些阻力。
-
为什么? SO上有很多问题,其中有2,3,4+个问题。两者都是相关的,这比分成 2 并为每个重复介绍更有意义...
标签: c# oop interface dependency-injection dependencies