zoukankan      html  css  js  c++  java
  • Adapter 模式(对象适配器模式)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Adapter
    {
        public interface INewLog
        {
            void WriteLog();
        }
        public interface IOldLog
        {
            void Write();
        }
        class FileLog:IOldLog
        {
            public void Write()
            {
                Console.WriteLine("Write log in file. ");
            }
        }
        class DataBaseLog:IOldLog
        {
            public void Write()
            {
                Console.WriteLine("Write log in database. ");
            }
        }
        class Adapter:INewLog         //须具备新接口,老功能
        {
            private IOldLog iol;
            private IOldLog iol2;
            public Adapter()
            {

            }
            public Adapter(IOldLog iol, IOldLog iol2)
            {
                this.iol = iol;
                this.iol2 = iol2;

            }
            public void WriteLog()
            {
                iol.Write();
                iol2.Write();
            }
        }
        class Program
        {
            public static void Main()
            {
    /*
                FileLog fl = new FileLog();
    //            Adapter a1 = new Adapter(fl);
                INewLog a1 = new Adapter(new FileLog());
                a1.WriteLog();

                DataBaseLog dl = new DataBaseLog();
    //            Adapter a2 = new Adapter(dl);
                INewLog a2 = new Adapter(new DataBaseLog());
                a2.WriteLog();*/
                FileLog fl = new FileLog();
                DataBaseLog dl = new DataBaseLog();
                INewLog inl = new Adapter(fl,dl);

                inl.WriteLog();
                Console.Read();
            }
        }

    }
    /*
    namespace Adapter
    {
        class OldClassA
        {
            public void XXOO()                  //A 老代码
            {
                Console.WriteLine("Hello, Everyone!");
            }
            public void OOXX()
            {
                Console.WriteLine("Byebye, Everyone!");
            }
        }
        abstract class NewClassB               //B 这样用
        {
            abstract public void SayHello();
            abstract public void SayBye();
        }
        class OldAdapterNew:NewClassB
        {
            private OldClassA oca = new OldClassA();
            public override void SayHello()
            {
                oca.XXOO();
            }
            public override void SayBye()
            {
                oca.OOXX();
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                OldAdapterNew oan = new OldAdapterNew();
                oan.SayHello();
                oan.SayBye();

                Console.Read();
            }
        }
    }
    */

  • 相关阅读:
    高阶函数
    js严格模式
    改变函数内this指向方法——call、apply、bind
    vue动态组件
    微信支付接口IP获取与调用之统一下单
    node.js实现微信公众号支付
    微信支付(公众号支付JSAPI)--转载
    公众号微信支付流程-(转)
    python 3 代码一模一样,出现运行结果不同的情况(只是不以为一样而已)
    pycharm设置自动换行
  • 原文地址:https://www.cnblogs.com/MayGarden/p/1530872.html
Copyright © 2011-2022 走看看