适配者模式

适配者模式:将一个类的接口,转换成客户期望的另一个接口。适配器将原本接口不兼容的类也可以互相配合使用。想象手机充电器,将220直流电转化为5V的直流电,适配器就是充当这个充电器的角色。

其实这个充电器的例子也是不大准确的,真正使用的话,也是这句话,将一个类的接口,转换为客户期待的另一个接口。也就是说要转化为客户需要的接口。

所以一般来说这个适配器:1.实现了客户的接口,因为这样可以转换为客户的接口。2.应该通过传入或者其他的办法将另一个接口或者类传入这个适配器,在这个适配器复写了接口的方法了做相应的处理,已便达到客户想要的需求。这样就可以将一个类或者接口转换成了客户的接口了。

比如这个例子:

有个机器,它只有两种操作,打开或者关闭;(实际的接口或者类)

public class Machine {
    public  void turnon()
    {
        System.out.println("turn on");
    }
    public  void turnoff()
    {
        System.out.println("turn off");
    }
}
客户想要一种新的操作方式,要求是以下的方法下对机器操作:(客户的接口)


public interface Machineoperate {
    public void turnon_atsitution1();
    public void turnff_atsitution1();
    public void turnon_atsitution2();
    public void turnff_atsitution2();
}
那里我们写一个适配器,客户可以通过这个适配器后能够进行他想要的操作:

public class Machineadapter implements Machineoperate{
    private  Machine a;
    public Machineadapter(Machine a) {
        this.a=a;
    }

    @Override
    public void turnon_atsitution1() {
        System.out.println(a.turnon()+"on turnon_atsitution1");
    }

    @Override
    public void turnff_atsitution1() {
        System.out.println(a.turnoff()+"on turnon_atsitution1");
    }

    @Override
    public void turnon_atsitution2() {
        System.out.println(a.turnon()+"on turnon_atsitution2");
    }

    @Override
    public void turnff_atsitution2() {
        System.out.println(a.turnoff()+"on turnon_atsitution2");
    }
}

测试:

 public static  void main(String[] s)
    {
      Machineoperate a=new Machineadapter(new Machine());
        a.turnon_atsitution1();
        a.turnff_atsitution1();
        a.turnon_atsitution2();
        a.turnff_atsitution2();
    }

结果如下:

turn on  on turnon_atsitution1
turn off  on turnon_atsitution1
turn on  on turnon_atsitution2
turn off  on turnon_atsitution2

目的就是将实际的接口转化为客户的接口,方法是需要实现客户的接口以便创建出客户的操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值