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.适配器模式的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学习Java设计模式 | 结构型模式篇:适配器模式

从零开始学习Java设计模式 | 结构型模式篇:适配器模式

设计模式之适配器模式与外观模式

结构篇-适配器模式

优雅的实现接口转换——适配器模式详解.md

结构型模式-适配器模式