码迷,mamicode.com
首页 > 其他好文 > 详细

Adapter适配器设计模式

时间:2017-03-15 12:31:34      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:namespace   适配器设计模式   line   read   实现   new   []   collect   ext   

一,Adapter适配器模式是将两个不兼容的类组合在一起使用,如下例子

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

namespace AdapterDesign
{
    //Adapter适配器模式是将两个不兼容的类组合在一起使用。
    class Program
    {
        static void Main(string[] args)
        {
            //正常的接口实现方法
            People p = new People();
            p.ispeak = new Chinese();
            p.Say();

            //第一种:Adapter适配器模式实现方法
            EnglishAdapter enaAdapter = new EnglishAdapter();
            enaAdapter._english = new English();
            p.ispeak = enaAdapter;
            p.Say();

            //第二种:Adapter适配器模式实现方法
            p.ispeak = new JapanAdapter();
            p.Say();
            Console.ReadKey();
        }
    }
    //People依赖于接口ISpeak,在People中定义了一个注入点(ISpeak _iSpeak),属于高层依赖底层
    public class People
    {
        public People() { }
        public ISpeak ispeak;
        public void Say()
        {
            this.ispeak.Say();
        }
    }

    //抽象接口
    public interface ISpeak
    {
        void Say();
    }

    //接口具体实现依赖于抽象接口
    public class Chinese : ISpeak
    {
        public void Say()
        {
            Console.WriteLine("中文");
        }
    }

    //第一种:Adapter适配器模式是将两个不兼容的类组合在一起使用,接口具体实现依赖于抽象接口
    public class EnglishAdapter : ISpeak
    {
        public English _english;
        public English english
        {
            get { return this._english; }
            set { this._english = value; }
        }
        public void Say()
        {
            this._english.SayEnglish();
        }
    }
    public class English
    {
        public void SayEnglish()
        {
            Console.WriteLine("英文");
        }
    }

    //第二种:Adapter适配器模式中间类继承实现
    public class JapanAdapter : Japan, ISpeak
    {
        public void Say()
        {
            SayJapan();
        }
    }
    public class Japan
    {
        public void SayJapan()
        {
            Console.WriteLine("日文");
        }
    }
}

  

综上:

1》将一个类的接口转换成另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 

 

Adapter适配器设计模式

标签:namespace   适配器设计模式   line   read   实现   new   []   collect   ext   

原文地址:http://www.cnblogs.com/May-day/p/6544221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!