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