GOF设计模式三:适配器模式

适配器模式是一种设计模式,用于将不同接口的类进行兼容,使不兼容的接口能够协同工作。本文通过代码示例详细解释了类适配器和对象适配器两种方式的实现,展示了如何在Java中使用适配器模式将Adaptee类转换为Target接口兼容的类,以满足客户端的使用需求。
摘要由CSDN通过智能技术生成

一、什么是适配器模式?

        将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

/**
 *被适配的类
 * (相当于例子中的,PS/2键盘)
 */
public class Adaptee {
    public void request(){
        System.out.println("可以完成客户需要的功能!");
    }
}
public interface Target {
    void HandleReq();
}
/**
 * 适配器(类适配器方式)
 * (相当于usb和ps/2的转接器)
 */
public class Adapter extends Adaptee implements Target{

    @Override
    public void HandleReq() {
        super.request();
    }
}
/**
 * 客户端类
 * (相当于例子中的笔记本,只有USB接口)
 */
public class Client {

    public void test1(Target t){
        t.HandleReq();
    }

    public static void main(String[] args) {
        Client c = new Client();
        Adaptee a = new Adaptee();
        Target t = new Adapter();

        c.test1(t);
    }
}

还有一种方式:

        对象适配器模式,因为java只支持单继承,如果使用了继承的话,扩展不容易。使用组合的方式可能会更好。

public class Adapter2 implements Target {
    private Adaptee adaptee;

    @Override
    public void HandleReq() {
        adaptee.request();
    }

    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
}
/**
 * 客户端类
 * (相当于例子中的笔记本,只有USB接口)
 */
public class Client {

    public void test1(Target t){
        t.HandleReq();
    }

    public static void main(String[] args) {
        Client c = new Client();
        Adaptee a = new Adaptee();
//        Target t = new Adapter();
//        c.test1(t);


        Target adapter2 = new Adapter2(a);
        c.test1(adapter2);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值