适配器模式的三种实现

1.接口适配器模式,借助中间抽象类空实现目标接口所有方法,子类选择性重写,可以减少实现不必要方法

先写一个接口,里面有三种方法

public interface Team {
    void exploitation();//开发
    void test();//测试
    void products();//产品
}

写一个实现类,实现这个接口

public class AbstractAdapter implements Team {
    @Override
    public void exploitation() {
        System.out.println("我是开发");
    }

    @Override
    public void test() {
        System.out.println("我是测试");
    }

    @Override
    public void products() {
        System.out.println("我是产品");
    }
}

再用一个类继承这个实现类,选择要实现的方法即可

public class TeamSocket extends AbstractAdapter {
    @Override
    public void exploitation() {
        System.out.println("全栈小王子");
    }

    public static void main(String[] args) {
        TeamSocket teamSocket=new TeamSocket();
        teamSocket.exploitation();
    }
}

2.类适配器模式;通过继承源类,实现目标接口的方式实现适配,但是由于Java单继承的机制,这就要求目标必须是接口,有一定的局限性

写一个接口,一个类,分别有对应的方法

public interface Play {
    void playGames();
}
public class Read {
    public  void readBook(){
        System.out.println("读书");
    }
}

用类实现接口并继承类

public class Adapter extends Read implements Play{
    @Override
    public void playGames() {
        System.out.println("玩游戏");
    }

    public static void main(String[] args) {
        Adapter a=new Adapter();
        a.playGames();//玩游戏
        a.readBook();//读书
    }
}

3.对象适配器模式 通过组合方式持有源类对象,可以把源类对象子类传进来,比类适配器更灵活

还是刚才的Play接口和Read类

public class Adapter implements Play{
    //通过组合持有读书的对象,内部引用读书来适配
    private Read read;
    public  Adapter(Read read){
        this.read=read;
    }
    public void readBook(){
        read.readBook();
    }

    @Override
    public void playGames() {
        System.out.println("玩游戏");
    }

    public static void main(String[] args) {
        Adapter adapter=new Adapter(new Read());
        adapter.playGames();//玩游戏
        adapter.readBook();//读书
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乔布

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

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

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

打赏作者

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

抵扣说明:

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

余额充值