c#设计模式-结构性模式-1.适配器模式

Posted mr.chenyuelin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#设计模式-结构性模式-1.适配器模式相关的知识,希望对你有一定的参考价值。

创建型:解决对象创建问题
结构型:解决类和对象的组合关系的问题

适配器模式:将一个类的接口,转换成客户端希望的另外一种接口,适配器作为原始接口(我们的类中本来具有的功能)和目标接口(客户端希望的功能)之间的桥梁

例子,我像让我手机的两孔插头插到排插上的3孔插座,我们需要一个“转接头”,转接头充当我们的适配器

适配器模式有两种类型:类适配器和对象适配器,类适配器通过多重继承实现接口的匹配,C#不支持多重继承,我们不考虑。我们主要介绍对象适配器。首先说明介绍适配器模式的三个角色:

Adaptee:初始角色,实现了我们想要使用的功能,但是接口不匹配

Target:目标角色,定义了客户端期望的接口

Adapter:适配器角色,实现了目标接口。实现目标接口的方法是:内部包含一个Adaptee的对象,通过这个对象调用Adaptee的原有方法实现目标接口,这个就是类与类之间的组合

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

namespace 适配器模式
{
    //抽象Target角色
    public abstract class Target
    {
        public abstract void Request();
    }
    //具体target角色,三孔插座
    public class ThreeHoleTarget :Target
    {
        public override void Request()
        {
            Console.WriteLine("两孔的充电器可以使用");
        }
    }
    //具体target角色,四孔插座
    public class FourHoleTarget:Target
    {
        public override void Request()
        {
            Console.WriteLine("两孔的充电器可以使用");
        }
    }
    //具体适配角色,Adaptee,手机上充电头的二孔插头
    public class TwoHoleAdaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("其它孔的插座也可以用了");
        }
    }
    //适配器类
    public class TwoHoleAdapter : ThreeHoleTarget
    {
        //创建两孔的实例
        private TwoHoleAdaptee twoHoleAdaptee = new TwoHoleAdaptee();
        //这里可以增加其它的适配对象

        /// <summary>
        /// 3孔的适配
        /// </summary>
        public override void Request()
        {           
            twoHoleAdaptee.SpecificRequest();
            //具体转换工作

        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            ThreeHoleTarget threeHoleTarget = new TwoHoleAdapter();
            threeHoleTarget.Request();
        }
    }
}

以上是关于c#设计模式-结构性模式-1.适配器模式的主要内容,如果未能解决你的问题,请参考以下文章

c#设计模式-结构性模式-1.适配器模式

C#设计模式系列:适配器模式(Adapter)

设计模式—— 适配器模式

OOAD-设计模式结构型模式之适配器装饰器代理模式

设计模式与代码的结构特性

Java设计模式之适配器模式