zoukankan      html  css  js  c++  java
  • Spring.NET依赖注入 制作可替换的算法

    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>

      结果将是: 你好, 世界


       

    技术改变世界
  • 相关阅读:
    IO流遍历文件夹下所有文件问题
    java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)
    IO流读取文件内容时,出现空格的问题(未找到原因)
    查看程序运行时间的例子
    OOP和
    java语言的特点
    java三大版本解析
    关于培训的一些文章
    Android-自定义开关(ViewGroup版)
    Android-自定义开关(升级版)
  • 原文地址:https://www.cnblogs.com/davidgu/p/2526440.html
Copyright © 2011-2022 走看看