我有一个需要使用策略设计模式的类。在运行时,我需要切换不同的算法以查看对应用程序性能的影响。策略使用IOC容器的设计模式 - Ninject专门为
有问题的类当前在构造函数中有四个参数,每个参数代表一个算法。
如何使用Ninject(或广义方法)我仍然可以使用IOC但使用策略模式?
目前的限制是我的内核(容器)知道每个算法接口,但只能绑定到一个具体的类。我目前唯一能看到的方法是在构造中传递所有八种算法,但使用不同的接口,但这似乎完全没有道理。如果我不使用IOC容器,我不会这样做,所以必须有一些解决方法。
代码示例:
class MyModule : NinjectModule
{
public override void Load()
{
Bind<Person>().ToSelf();
Bind<IAlgorithm>().To<TestAlgorithm>();
Bind<IAlgorithm>().To<ProductionAlgorithm>();
}
}
人需要利用两种算法的,所以我可以在运行时切换。但是只有TestAlgorithm被绑定,因为它是容器中的第一个。
这工作得很好。干杯。 – Finglas 2010-03-06 17:34:18