我正在学习企业库DAL。
据我所知,我可以通过访问我的数据
数据库db = DatabaseFactory.CreateDatabase();
并通过统一容器解析器。
如果我可以使用DatabaseFactory做同样的事情,我不明白为什么我需要统一容器? 使用统一有什么好处?
答案 0 :(得分:3)
统一容器不仅仅是配置和创建企业库对象。 Unity可以自动为您创建对象的一种方法是简单地在构造函数中声明所需的对象。
public class Foo
{
IExceptionManager _em;
IDatabase _db;
IServiceAgent _sa; // custom made service agent for accessing some other web service
public Foo(IExceptionManager em, IDatabase db, IServiceAgent _sa)
{
_em = em;
_db = db;
_sa = sa;
}
}
在上面的示例中,Unity容器将自动为您创建成员级别变量_em,_db和_sa。您可以在配置文件中注册映射到接口的任何具体类型。您甚至可以将Unity配置为在调用者和目标对象之间放置代理对象,这可以执行日志记录,跟踪等操作...(策略注入)
依赖注入和策略注入是一个复杂的主题,因此我建议您阅读EntLib和Unity附带的Unity文档。如果您在系统的关键区域使用Unity,那么您可以通过模拟和扩展获得很大的灵活性。单元测试,横切关注,仪器和健康监测。