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>

      结果将是: 你好, 世界


       

    技术改变世界
  • 相关阅读:
    【宋红康程序思想学习日记5】数组排序之冒泡法
    求割点 poj 1523
    网络流 poj 3308 最小割
    网络流最小割 POJ 3469
    网络流 POJ2112
    网络流 HDU 3605
    网络流HDU 2883
    网络流 最大流HDU 3549
    微信公众平台开发者中心服务器配置Token验证失败问题
    排列熵算法简介及c#实现
  • 原文地址:https://www.cnblogs.com/davidgu/p/2526440.html
Copyright © 2011-2022 走看看