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

  • 相关阅读:
    构造代码块重要理解
    Java中静态代码块、构造代码块、构造函数、普通代码块
    MySQL-分组查询(GROUP BY)及二次筛选(HAVING)
    mysql select将多个字段横向合拼到一个字段
    java语言支持的变量类型
    static修饰属性,方法,类
    恶意代码分析----网络环境配置
    Windows反调试技术(下)
    Windows反调试技术(上)
    脱壳入门----常见的寻找OEP的方法
  • 原文地址:https://www.cnblogs.com/MayGarden/p/1530872.html
Copyright © 2011-2022 走看看