• 适配器模式,新老系统兼容


    1、Why

          在实际开发过程中,由于系统的升级需要对现有的系统进行改造,旧的代码可能就不兼容新的设计了。

          由于系统业务很复杂或部分业务数据在新系统试运行,不能直接在原有代码上进行修改....

          如何让老系统在几乎不改任何代码的基础上去兼容新的接口(标准接口)--适配器模式

    2、How

         比如日志模块,

         老系统:

        /// <summary>
        /// 老的系统记录日志的方式
        /// </summary>
        public class DbLog
        {
            public void Log(string content)
            {
                Console.WriteLine("write db log:{0}",content);
            }
        }

       新的设计,需要设计出一个标准,暂时用File去记录,或许以后会用NLog,RabbitMQ,新的日志服务就都要实现标准接口

        /// <summary>
        /// 新的接口--标准
        /// </summary>
        public interface ILogService
        {
            void Log(string content);
        }

        File记录:

      /// <summary>
        /// 新接口的File实现
        /// </summary>
        public class FileLog : ILogService
        {
            public void Log(string content)
            {
                Console.WriteLine("write file log:{0}",content);
            }
        }

       调用:

       string content="xxxxx";
       ILogService logService = new FileLog();
       logService.Log(content);

      让老系统DbLog兼容新的接口

       /// <summary>
        /// 兼顾老的系统
        /// </summary>
        public class LogAdapter:ILogService
        {
            DbLog dbLog = new DbLog();
            public void Log(string content)
            { 
                dbLog.Log(content);
            }
        }

     调用:

               string content="xxxxx";
                ILogService logService = new FileLog();
                logService.Log(content);
    
                logService = new LogAdapter();
                logService.Log(content);

     

  • 相关阅读:
    qt的.pro配置总结
    【GOJ 1489】Monster Hunter
    CPU 杂谈
    【CF 1061C|GOJ 3505】Multiplicity
    【CF 1039D|GOJ 3502】You Are Given a Tree
    我跳过的坑
    【CF 1101D|GOJ 3501】GCD Counting
    【HDU 5269|GOJ 739】xor的最低位
    beta阶段组间的140字互评
    【第七周】【新蜂站会】3
  • 原文地址:https://www.cnblogs.com/zjflove/p/6831997.html
Copyright © 2020-2023  润新知