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();
            }
        }
    }
    */

  • 相关阅读:
    xmind等工具下载
    remix使用经验积累
    visual studio code下载地址
    以太坊存储类型(memory,storage)及变量存储详解
    remix共享本地文件夹教程
    在remix恢复已部署的合约步骤
    ERC721 相关语法和知识点学习
    用truffle写测试用例
    truffle环境搭建和应用
    jenkins pipeline基础语法与示例
  • 原文地址:https://www.cnblogs.com/MayGarden/p/1530872.html
Copyright © 2011-2022 走看看