通常我会这样做:
public class DBFactory
{
public UserDAO GetUserDao()
{
return new UserDao();
}
}
其中 UserDao 是 IUserDao 的具体实现。
所以现在我的代码会乱七八糟:
DBFactory factory = new DBFactory();
IUserDao userDao = factory.GetUserDao();
User user = userDao.GetById(1);
现在,如果我想交换实现,我将不得不去我的 DBFactory 并更改我的代码以调用不同的实现。
现在,如果我使用 NINject,我会在应用程序启动时绑定特定的实现,或者通过配置文件。(或基于特定参数等进行绑定等)。
这就是全部吗?或者还有更多?
(我问我是否想知道它在这里对我有什么帮助的原因:Help design a order manager class)