大话设计模式-适配器模式

使用场景:接口不相同时,首先不应该考虑用适配器,而是应该考虑通过重构统一接口。在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。

 1. 外籍球员抽象类、实现类

package com.hj.designPattern.adapter;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public abstract class Player {
    private String name;
    Player(){}
    public abstract void attack();
    public abstract void defend();
}

package com.hj.designPattern.adapter;

public class ForwardPlayer extends Player{
    public ForwardPlayer(String name) {
        super(name);
    }

    @Override
    public void attack() {
        System.out.println("外籍前锋进攻" + super.getName());
    }

    @Override
    public void defend() {
        System.out.println("外籍前锋防守" + super.getName());
    }
}


package com.hj.designPattern.adapter;

public class CenterPlayer extends Player{
    public CenterPlayer(String name) {
        super(name);
    }

    @Override
    public void attack() {
        System.out.println("外籍中锋进攻" + super.getName());
    }

    @Override
    public void defend() {
        System.out.println("外籍中锋防守" + super.getName());
    }
}


package com.hj.designPattern.adapter;

public class GuardsPlayer extends Player{
    public GuardsPlayer(String name) {
        super(name);
    }

    @Override
    public void attack() {
        System.out.println("外籍后卫进攻" +super.getName());
    }

    @Override
    public void defend() {
        System.out.println("外籍后卫防守" +super.getName());
    }
}

2. 中国球员抽象类、中国球员实现类

package com.hj.designPattern.adapter;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public abstract class ZhPlayer {
    private String name;

    ZhPlayer(){}
    public abstract void 进攻();
    public abstract void 防守();
}

package com.hj.designPattern.adapter;

public class ZhCenter extends ZhPlayer{
    ZhCenter(){
        super();
    }
    public ZhCenter(String name) {
        super(name);
    }

    @Override
    public void 进攻() {
        System.out.println("中国中锋球员进攻" + super.getName());
    }

    @Override
    public void 防守() {
        System.out.println("中国中锋球员防守" + super.getName());
    }
}

3. 适配器类

package com.hj.designPattern.adapter;

import lombok.Data;

@Data
public class Translator extends Player{
    private ZhPlayer zhPlayer;

    Translator(String name){
        super(name);
    }

    @Override
    public void attack() {
        zhPlayer.进攻();
    }

    @Override
    public void defend() {
        zhPlayer.防守();
    }
}

4. 测试类

package com.hj.designPattern.adapter;

public class AdapterTest {
    public static void main(String[] args) {
        ForwardPlayer forwardPlayer = new ForwardPlayer("巴蒂尔");
        forwardPlayer.attack();
        CenterPlayer centerPlayer = new CenterPlayer("麦克格雷迪");
        centerPlayer.defend();
        Translator translator = new Translator("姚明");
        ZhCenter zhCenter = new ZhCenter();
        zhCenter.setName(translator.getName());
        translator.setZhPlayer(zhCenter);
        translator.attack();
    }
}

参考:(13条消息) 大话设计模式——适配器模式_不见长安见晨雾的博客-CSDN博客icon-default.png?t=M4ADhttps://blog.csdn.net/fengsheng5210/article/details/124098597

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值