设计模式-桥接模式-java-中文版

码上见分晓!
中文版本的设计模式详解,案例中的代码尽量使用了中文.
以游戏和生活中较好理解的场景讲解设计模式的实际用法,便于理解吸收,让设计模式的学习不再困难!!!

import java.util.ArrayList;
import java.util.List;

/**
 * buff太多,剑圣需要桥接模式!
 */
public class 桥接模式主程序 {
    public static void main(String[] args) {
        List<Buff> buff们 = new ArrayList<>();
        buff们.add(new 嗜血术());
        buff们.add(new 耐久光环());

        游戏单位 剑圣 = new 剑圣(buff们);
        剑圣.移动();
        System.out.println();
        剑圣.攻击();
        System.out.println();
        剑圣.死亡();
        System.out.println();


        buff们 = new ArrayList<>();
        buff们.add(new 心灵之火());
        恶魔猎手 恶魔猎手 = new 恶魔猎手(buff们);
        恶魔猎手.移动();
        System.out.println();
        恶魔猎手.攻击();
        System.out.println();
        恶魔猎手.死亡();
        System.out.println();
    }
}

class 恶魔猎手 implements 游戏单位 {
    public 恶魔猎手(List<Buff> buffs) {
        this.buffs = buffs;
    }

    private List<Buff> buffs = new ArrayList<>();

    @Override
    public List<Buff> 获取Buff() {
        return buffs;
    }

    public 恶魔猎手(游戏单位 单位, List<Buff> buffs) {
        this.buffs = buffs;
    }

    @Override
    public void 移动() {
        for (Buff buff : buffs) {
            buff.激活();
        }
        System.out.println("恶魔猎手拿着双刀刀跑路呢");
    }

    @Override
    public void 攻击() {
        for (Buff buff : buffs) {
            buff.生效();
        }
        System.out.println("恶魔猎手拿着双刀砍向敌人");
    }


    @Override
    public void 死亡() {
        System.out.println("恶魔猎手缓缓倒下");
        for (Buff buff : buffs) {
            buff.消失();
        }
    }
}

class 剑圣 implements 游戏单位 {
    public 剑圣(List<Buff> buffs) {
        this.buffs = buffs;
    }

    private List<Buff> buffs = new ArrayList<>();

    @Override
    public List<Buff> 获取Buff() {
        return buffs;
    }

    public 剑圣(游戏单位 单位, List<Buff> buffs) {
        this.buffs = buffs;
    }

    @Override
    public void 移动() {
        for (Buff buff : buffs) {
            buff.激活();
        }
        System.out.println("剑圣拿着西瓜刀跑路呢");
    }

    @Override
    public void 攻击() {
        for (Buff buff : buffs) {
            buff.生效();
        }
        System.out.println("剑圣的西瓜刀砍向敌人");
    }


    @Override
    public void 死亡() {
        System.out.println("剑圣缓缓倒下");
        for (Buff buff : buffs) {
            buff.消失();
        }
    }
}

interface Buff {
    void 激活();

    void 生效();

    void 消失();
}

interface 游戏单位 {

    void 移动();

    void 攻击();

    void 死亡();

    List<Buff> 获取Buff();
}

class 耐久光环 implements Buff {
    @Override
    public void 激活() {
        System.out.println("单位下方出现耐久光环");
    }

    @Override
    public void 消失() {
        System.out.println("单位下方出现耐久光环消失");
    }

    @Override
    public void 生效() {
        System.out.println("速度和移动速度增加");
    }
}

class 嗜血术 implements Buff {
    @Override
    public void 激活() {
        System.out.println("单位体积变大,双手变红发光");
    }

    @Override
    public void 消失() {
        System.out.println("单位体积恢复,双手黯淡下来");
    }

    @Override
    public void 生效() {
        System.out.println("攻击速度增加");
    }

}

class 心灵之火 implements Buff {
    @Override
    public void 激活() {
        System.out.println("单位上方出现黄色印记");
    }

    @Override
    public void 消失() {
        System.out.println("单位上方黄色印记慢慢黯淡,直至消失");
    }

    @Override
    public void 生效() {
        System.out.println("单位攻击力和护甲增加");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值