适配器模式

文章介绍了Java中的三种适配器模式:类适配器、对象适配器和接口适配器。类适配器通过继承适配对象并实现目标接口;对象适配器则通过聚合实现,解决了单继承的问题;接口适配器用于当不需要实现接口所有方法时,提供一个空实现的基础。文章通过高级玩具和低级玩具的例子,详细阐述了这些模式的使用方式。
摘要由CSDN通过智能技术生成

有三种适配器模式。

  1. 类适配器

  1. 对象适配器

  1. 接口适配器

类适配器

适配器继承适配对象,并实现适配目标的所有方法。

一个低级玩具的想变成高级玩具,适配器先继承那个低级玩具。

首先适配器要去继承需要适配对象(低级玩具,是个类)

然后适配器实现适配目标(高级玩具,是个接口)

最后直接new适配器对象,调用适配器的方法即可。

注意:因为Java是单继承,所以较少用此模式。

对象适配器

定义:基于聚合原则,将适配的对象作为适配器的一个属性。

和类适配器的区别就是:不继承适配对象(低级玩具,是个类)了,而是直接在适配器中new一个低级玩具直接获得此类的所有方法。

好处:解决单继承问题。

接口适配器

定义:适用于一个接口不想实现其所有的方法的情况,只想实现其中一个方法就行了。

举例:activity生命周期回调函数。

首先,适配器是抽象的。

其次,实现了所有接口的方法,但是方法体是空的。

然后,真正使用的时候就new一个适配器,然后所有的方法已经实现过了,只需要重写里面需要重写的方法即可。

适配目标(高级玩具)

public interface Listener{
    public void start();
    public void pause();
    public void stop();
    public void end();
}

适配器

public abstract class AbsListener implements Listener{
    @Override
    public void start(){
        
    }

 @Override
    public void pause(){
        
    }

 @Override
    public void stop(){
        
    }

 @Override
    public void end(){
        
    }
}

用一个类

public class Player{
    public void listen(Listener listener){
        listener.start();
        listener.pause();
        listener.stop();
        listener.end();
    }
}

主程序

public class Client{
    public static void main(String[] args){
        new Player().listen(new AbsListener(){
            @Override
            public void start(){
                System.out.println("开始好方法");
            }
        });

         new Player().listen(new AbsListener(){
            @Override
            public void end(){
                System.out.println("结束好方法");
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七qi_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值