设计模式(结构型)---适配器模式

概述

适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
适配器模式分为三种:接口适配器,类适配器,对象适配器

举例说明

接口适配器

有一个票务接口

/**
 * 票务接口
 */
public interface Ticketing {

    //查询
    void queryTicket();

    //支付
    void payment();

    //退票
    void refundTicket();

    //改签
    void ticketChange();

}

假设火车票只需要查询和支付功能,飞机票只需要退款和改签功能,那么火车票务类与飞机票务类都没必须要实现Ticketing的全部方法,此时定义一个TicketingAdapter类实现Ticketing接口,对Ticketing的所有方法做空实现

/**
 * 适配器,对Ticketing接口的所有方法做空实现
 */
public class TicketingAdapter implements Ticketing{
    @Override
    public void queryTicket() {

    }

    @Override
    public void payment() {

    }

    @Override
    public void refundTicket() {

    }

    @Override
    public void ticketChange() {

    }
}

再让火车票务类与飞机票务类继承TicketingAdapter类,重写需要的方法即可

public class TrainTicket extends TicketingAdapter{

    @Override
    public void queryTicket() {
        System.out.println("火车票查询");
    }

    @Override
    public void payment() {
        System.out.println("火车票支付");
    }
}
public class PlaneTicket extends TicketingAdapter{

    @Override
    public void refundTicket() {
        System.out.println("机票退款");
    }

    @Override
    public void ticketChange() {
       System.out.println("机票改签");
    }
}

类适配器

要将一个转换成满足另一个新接口的类时可以用类的适配器模式,新建一个类,继承原有的类并实现新接口即可
原有的类

public class OldClass {

    public void method1(){
        System.out.println("OldClass method1");
    }
}

新接口

public interface NewClass {

    void method1();

    void method2();

    void method3();
}

类适配器

public class ClassAdapter extends OldClass implements NewClass{

    @Override
    public void method2() {
        System.out.println("Adapter method2");
    }

    @Override
    public void method3() {
        System.out.println("Adapter method3");
    }

}

新接口中的method1方法适配原有的类的method1方法,当然新接口中的方法名不是method1也可以,实现新方法调用原有类中的方法即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值