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

posted on 2009-07-25 14:01  Acor  阅读(175)  评论(0编辑  收藏  举报

导航