我最近一直在尝试学习IoC,并根据以下代码提出了几个问题:
public class WarriorModule : NinjectModule { public override void Load() { Bind<IWeapon>().To<Sword>(); Bind<Samurai>().ToSelf(); } }
我在抓住接口的新概念时遇到麻烦.在我创建一个接口如IRunnable之前,实现函数void Run().使用IoC,我正在查看一个界面,只能映射到一个具体的类.假设我将如何将多个具体类映射到一个接口?我继续阅读,你可以将多个接口映射到一个具体的类,但不是相反的方法(除非这是上下文映射).
假设接口只映射到单个对象,何时应该创建一个接口,而不是使一个对象绑定到它自己?无论哪种方式,当映射更改正确时,您将不得不更改同一段代码
编辑:我标记了我做的答案,因为它帮助我个人.尽管如此,这两个意见都是同样的信息.
我最近
addressed this topic from a more general viewpoint.底线是松散耦合的代码有一个1:1接口过多的倾向.这与
Reused Abstractions Principle相反.
原文链接:https://www.f2er.com/javaschema/281825.html然而,这是一个更多的应用程序设计问题,而不是与特定的DI容器有关的问题.虽然我不知道Ninject,我曾经使用过的所有其他容器(Castle Windsor,StructureMap,Spring.NET,Autofac,Unity,甚至MEF)都可以将多个实现映射到同一个接口.他们如何做到这一点略有不同,但是我在my book的第四部分中涵盖了所有这些 – 不幸的是,这本书没有涵盖Ninject.