Welcome

首页 / 软件开发 / .NET编程技术 / AgileEAS.NET平台之对象控制反转

AgileEAS.NET平台之对象控制反转2011-12-20 魏琼东 控制反转,即IOC(Inversion of Control),也叫反转模式,也称依赖注入DI(Dependency Injection)模式,关于此概念的解释我在此文不做过讲说明。

对于设计模式类的东西,我也没有认真系统的去研究过那X类N种设计模式,无论何种设计模式,都用于解决一个问题,那就是解决对象之间的耦合关系,即解耦。

AgileEAS.NET在最初版本最不包含IOC容器,更多应用抽象工厂之类的设计模式,在这AgileEAS.NET大概第二个版本,加入了一个轻量级(微量级)的IOC容器,也许实现的并不优雅,在多年的应用中慢慢完善。

以下我列举一个 AgileEAS.NET平台IOC容器的一个应用场景,在某个产品开发中,有的产品使用ORACLE数据库、有的客户使用SQLServer数据库,这就要求我们必须做到产品同时支持两种数据库,我们在开发中对数据DAL采用其他接口驱动的设计,即定义三个项目:DAL接口、DAL的SQLServer 实现、DAL的ORACLE实现,假定三个项目名称为Exam.DAL.Interface、Exam.DAL.SQLServer、 Exam.DAL.Oracle;我们在Exam.DAL.Interface中定义N个业务对象接口和一个管理这些业务对象接口的 IDALManager接口:

public interface IDALManager
{
IIteminfo CreateIteminfo();
IIteminfoList CreateIteminfoList();
IProduct CreateProduct();
IProductList CreateProductList();
}

我们在Exam.DAL.SQLServer、Exam.DAL.Oracle中分别实现业务接口和IDALManager接口:

public class DALManager : IDALManager
{
public IIteminfo CreateIteminfo()
{
return new Iteminfo();
}
public IIteminfoList CreateIteminfoList()
{
return new IteminfoList();
}
public IProduct CreateProduct()
{
return new Product();
}
public IProductList CreateProductList()
{
return new ProductList();
}
}