1. 配置文件

<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>

<spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
    
    <objects>
      <!-- Default Implement -->
      <object name="algHello" type="CsharpTrainer.Strategy.Hello.EngHello, CsharpTrainer.Strategy">
      </object>
      <!-- Extended Implement -->
      <!--<object name="algHello" type="CsharpTrainer.Strategy.Hello.ChnHello, CsharpTrainer.Strategy">
      </object>-->
    </objects>
  </spring>

...
</configuration>

2. 算法接口

策略接口

public interface IStrategy
    {
        void Execute();
    }

算法1

public class EngHello : IStrategy
    {
        public void Execute()
        {
            Console.WriteLine("Hello, World!");
        }
    }

算法2

public class ChnHello : IStrategy
    {
        public void Execute()
        {
            Console.WriteLine("你好, 世界!");
        }
    }

3. Spring调用端

public class HelloAlgorithm
    {
        public static void SayHello()
        {
            //从config文件中取得程序集信息
            IApplicationContext context = ConfigurationManager.GetSection("spring/context") as IApplicationContext;

//调用方法
            IStrategy alg = context.GetObject("algHello") as IStrategy;
            alg.Execute();
        }

4. 运行和替换

运行程序,结果是Hello, World

如果我们把算法配置换成

<object name="algHello" type="CsharpTrainer.Strategy.Hello.ChnHello, CsharpTrainer.Strategy">
</object>

结果将是: 你好, 世界

转载于:https://www.cnblogs.com/davidgu/archive/2012/05/30/2526440.html

Spring.NET依赖注入 - 制作可替换的算法相关推荐

  1. 据说,80%的人没有真正理解了Spring的依赖注入

    前言 提起Spring,大家肯定不陌生,它是每一个Java开发者绕不过去的坎.Spring 框架为基于 java 的企业应用程序提供了一整套解决方案,方便开发人员在框架基础快速进行业务开发. 在官网中 ...

  2. factorybean 代理类不能按照类型注入_《Spring入门经典》:使用Spring进行依赖注入

    第二章:使用Spring进行依赖注入 重点:配置并使用Spring容器 使用不同类型的配置元数据来配置Spring容器 理解依赖解析 了解自动装配的优缺点 在容器中执行显式Bean查找 学习不同的Be ...

  3. 在ABAP里模拟实现Java Spring的依赖注入

    Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用.通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便. 那么ABAP能否从语言层面上也 ...

  4. Spring Setter依赖注入示例

    学习如何编写Spring Setter依赖注入示例 . Setter注入是Spring依赖注入的一种 . Spring支持字段注入,Setter注入以及构造函数注入,以将依赖项注入Spring托管的b ...

  5. Spring字段依赖注入示例

    学习如何编写Spring Field Injection示例 . 字段注入是Spring框架 依赖注入的一种 . 在本教程中,我们将编写几个类,并看一看现场注入工程. 有关Spring依赖注入的更多信 ...

  6. Spring框架----Spring的依赖注入

    1.spring的依赖注入的概念 依赖注入:dependency Injection IOC的作用:降低程序之间的依赖关系,但不是消除. 依赖关系的管理:以后都交给了spring来维护 在当前类中需要 ...

  7. Spring和依赖注入的价值

    javaeye上看到有帖子,置疑spring和依赖注入的价值,回复内容整理如下: 依赖注入对设计有利,而spring则促进了依赖注入的使用. 如果业务处理类,它所使用的倚赖,都是依靠在这个类内部实现或 ...

  8. spring(一)依赖注入与 SPEL

    Spring之依赖注入与 SPEL 一.控制反转与依赖注入 二.helloworld 三.构造注入 四.级联注入 五.单例与多例 六.工厂方法创建 Bean 七.包扫描管理 bean 八.SPEL与资 ...

  9. Spring实现依赖注入的几种方式

    Spring实现依赖注入的几种方式 1.基于有参构造实现 <bean id="user" class="com.ccu.twj"><const ...

最新文章

  1. 使用选择器语法查找元素——​​​​​​​Selector选择器概述 ——未完待续
  2. DNN结构演进History—CNN( 优化,LeNet, AlexNet )
  3. javafx隐藏_JavaFX技巧14:StackPane子项-隐藏但不消失
  4. keras实现嘴唇图像autoencoder
  5. sql 查询表结构_SQL查询语句的完整结构解析
  6. visio中公式太小_串并联管道中调节阀的工作流量特性分析
  7. php表单的提交方法有什么,php – 确定哪个表单已提交的最佳方法是什么?
  8. Android的双进程守护,广播和双进程
  9. 数据抓取的艺术(一~三):Selenium+Phantomjs数据抓取环境配置
  10. 华三交换机配置DHCP中继
  11. Win7加密访问共享文件夹
  12. Android 选择图片、上传图片之PictureSelector
  13. 项目2-Time类中的运算符重载
  14. Oracle database TSPITR(TableSpace Point-In-Time Recovery) 表空间基于时间点的恢复
  15. 启用php client,RabbitMQ(二):安装 和 PHP Client
  16. 【C 语言小游戏】手打贪吃蛇1,闭关在家37天“吃透”这份345页PDF
  17. Java应用小技巧---label上的文字显示下划线
  18. excel熵值法计算权重_指标权重确定方法 1-熵值法
  19. 关于WMV DRM的移除
  20. 材料科学基础学习指导-吕宇鹏-名词和术语解释-第10章:材料概论

热门文章

  1. pandas怎么去除nan_pandas缺失值处理之——如何消去Nan值对数字型字符串数据类型的影响,让数字型字符串保持原始str类型,而不会自动变为float类型?...
  2. springboot16 整合MyBatis
  3. tcl如何获取键盘输入
  4. C语言---数字迷宫
  5. 基于hadoop构建对象存储系统_基于Hadoop企业私有云存储平台的构建
  6. python编程从入门到实战16章x轴刻度_PYTHON编程:从入门到实践之数据可视化
  7. pycharm 中文_环境搭建:3.pycharm社区版安装配置
  8. python目录和文件的基本操作_python学习笔记(七)——文件和目录操作
  9. -bash: vim: command not found 两种解决方法
  10. 最详细 Spring Boot 入门(-)