适配器模式

适配器模式有两种:对象适配器和类适配器;类适配器需要多继承,并不适应与C#。

对象适配器。
原理:客户访问目标接口A,没有想要的方法,却在被适配器B中发现合适的方法,我们不能改变接口A,在这种情况下,我们可以使用一个适配器来中转,我们可以定义一个适配器p来进行中转,这个适配器p要实现我们访问的接口A,这样我们就能继续访问当前接口A中的方法(虽然它目前不是我们的菜),然后在适配器P中利用对象组合,定义私有变量C(对象)(B接口指向变量名),再定义一个带参数的构造器用来为对象C赋值,再在A接口的方法实现中使用对象C调用其来源于B接口的方法。

实例讲解
我手中有个ps2插头的设备,但是主机上只有usb插头的插口,怎么办呢?弄个转换器,将ps2插头转换成为USB插头就可以使用了。

ps2接口:Ps2

public interface Ps2{
    void isPs2();
}

usb接口:Usb

 public interface Usb {
     void isUsb();
 }

USB接口实现类:Usber

public class Usber:Usb {


    public override void isUsb() {
        Debug.Log("USB口");
    }

}

适配器:Adapter

public class Adapter:Ps2 {

    private Usb usb;
    public Adapter(Usb usb){
        this.usb = usb;
    }

    public override void isPs2() {
        usb.isUsb();
    }

}

测试类:

public class client:MonoBehaviour{
    public void Awake()
    {
        Ps2 p=new Adapter(new Usber());
        p.isPs2();
    }
}

结果显示:usb

接口Ps2:描述ps2接口格式

接口Usb:描述USB接口格式

类Usber:是接口Usb的实现类,是具体的USB接口格式

Adapter:用于将ps2接口格式转换成为USB接口格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值