控制反转(IOC)
2013-01-15 11:47
99 查看
应用场景:view层某列,或某值有多个复杂的逻辑处理。
解决方法:
1.将所有逻辑处理抽象为一个接口。
2.将所有逻辑处理抽象为对应的业务处理。
3.将所有逻辑处理配置到XML中。
4.运行时自动调用所需要的逻辑处理。
对应代码:
1.将所有逻辑处理抽象为一个接口:
/// <summary>
/// 获取流程状态接口
/// </summary>
public interface IProjectMenu
{
string GetFlowState(string projectID, ref string[] relationIdIDs);
}
2.将所有逻辑处理抽象为对应的业务处理:
public class BoHTDC : IProjectMenu
{
public string GetFlowState(string projectID, ref string[] relationIdIDs)
{
return ""
}
}
其他业务抽象类一样处理。
3.将所有逻辑处理配置到XML中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<components>
<!--可研提交-->
<component id="BoLXKYTJ" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXKYTJ, Sinopec.IWMS.Business"></component>
<!--可研预审流程-->
<component id="BoLXKYYS" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXKYYS, Sinopec.IWMS.Business"></component>
<!--可研正式评审流程-->
<component id="BoLXKYZSPS" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXKYZSPS, Sinopec.IWMS.Business"></component>
<!--总体设计评审流程-->
<component id="BoLXZTSJPS" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXZTSJPS, Sinopec.IWMS.Business"></component>
<!-- 其他配置-->
</components>
</configuration>
4.运行时自动调用所需要的逻辑处理:
//建立容器
IWindsorContainer container = new WindsorContainer(new XmlInterpreter(path));
//获取组件(通过装载的Key,在以后的版本中可以通过接口类型来解析)
var menuService = container.Resolve(strClassName) as IProjectMenu;
menuService.GetFlowState(projectID, ref relationIds);
解决方法:
1.将所有逻辑处理抽象为一个接口。
2.将所有逻辑处理抽象为对应的业务处理。
3.将所有逻辑处理配置到XML中。
4.运行时自动调用所需要的逻辑处理。
对应代码:
1.将所有逻辑处理抽象为一个接口:
/// <summary>
/// 获取流程状态接口
/// </summary>
public interface IProjectMenu
{
string GetFlowState(string projectID, ref string[] relationIdIDs);
}
2.将所有逻辑处理抽象为对应的业务处理:
public class BoHTDC : IProjectMenu
{
public string GetFlowState(string projectID, ref string[] relationIdIDs)
{
return ""
}
}
其他业务抽象类一样处理。
3.将所有逻辑处理配置到XML中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<components>
<!--可研提交-->
<component id="BoLXKYTJ" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXKYTJ, Sinopec.IWMS.Business"></component>
<!--可研预审流程-->
<component id="BoLXKYYS" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXKYYS, Sinopec.IWMS.Business"></component>
<!--可研正式评审流程-->
<component id="BoLXKYZSPS" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXKYZSPS, Sinopec.IWMS.Business"></component>
<!--总体设计评审流程-->
<component id="BoLXZTSJPS" service="Sinopec.IWMS.Business.IProjectMenu, Sinopec.IWMS.Business" type="Sinopec.IWMS.Business.BoLXZTSJPS, Sinopec.IWMS.Business"></component>
<!-- 其他配置-->
</components>
</configuration>
4.运行时自动调用所需要的逻辑处理:
//建立容器
IWindsorContainer container = new WindsorContainer(new XmlInterpreter(path));
//获取组件(通过装载的Key,在以后的版本中可以通过接口类型来解析)
var menuService = container.Resolve(strClassName) as IProjectMenu;
menuService.GetFlowState(projectID, ref relationIds);
相关文章推荐
- 控制反转(IOC)/依赖注入(DI)理解
- php 中的 依赖注入(DI) 和 控制反转(IoC)
- 控制反转IOC与依赖注入DI
- spring IOC 控制反转的简单理解
- Spring.net 控制反转(IoC)容器_(收集)
- 话说 依赖注入(DI) or 控制反转(IoC)
- PHP的依赖注入(DI) 和 控制反转(IoC)
- IoC控制反转与DI依赖注入
- Spring基础知识之IOC(控制反转)
- Spring的依赖注入(DI)和控制反转(IOC)
- 说说控制反转(IoC)、依赖倒置(DI)和依赖注入(DI)(draft)
- 控制反转(IoC)与依赖注入(DI)
- Spring学习02 (IOC控制反转)
- Spring.Net学习 控制反转(IoC)和面向切面编程(AOP)
- IOC(控制反转和依赖注入)之Autofac
- 控制反转(IoC)
- 控制反转(IOC) 和依赖注入(DI) 的理解
- IoC模式(依赖、依赖倒置、依赖注入、控制反转)
- 控制反转(IOC),依赖注入(DI),耦合
- 【面向对象设计】控制反转IoC