Java设计模式之从[暗黑破坏神"装备镶嵌宝石系统"]分析桥接(Bridge)模式

本文通过分析暗黑破坏神的装备镶嵌系统,阐述了桥接模式的概念和应用。在装备与宝石的组合中,由于存在武器种类和宝石种类两个维度的变化,传统的实现方式会导致大量类的产生。桥接模式则将武器抽象和宝石实现分离,允许两者独立扩展。通过EquipmentRubyBridge和Jewel接口,创建一个桥梁将它们连接,使得武器类可以插入不同的宝石类,简化了代码并提高了灵活性。
摘要由CSDN通过智能技术生成

  暴雪公司著名的游戏暗黑破坏神中,有一个经典的"镶嵌系统",例如,可以为武器镶嵌红宝石、蓝宝石来得到攻击特效或攻击力加成,为防具镶嵌红宝石、蓝宝石来得到攻击特效或者防御力的加成。不同的宝石加在不同的装备上会有不同效果,如宝石加在武器上则提升武器攻击力,加在防具上则提升防御力。

  假设我们建立了一个剑类(Sword)和一个盾类(Shield),建立了一个红宝石类(Ruby)和一个蓝宝石类(Sapphire)。由于装备可以镶嵌宝石,那么这两个部分是可以两两组合的,为此,我们必须要写出4个类来表示它们的全部组合: SwordWithRuby, SwordWithSapphire, ShieldWithRuby, ShieldWithSapphire,代码编写十分繁琐。产生这种情况的原因是,“装备镶嵌宝石”存在这两个维度的变化(武器种类,宝石种类),假设有n种武器,m种宝石,为了实现这个机制,我们不得不构造m * n个类。

  这个时候,我们可以用桥接模式来进行设计。

  桥接模式的意图是将抽象部分与它的实现部分分离,使它们可以独立变化。在镶嵌系统中,抽象部分是什么?抽象部分就是武器镶嵌宝石的一个抽象类(EquipmentRubyBridge);实现部分是什么?实现部分是每种宝石的效果(Jewel)。代码如下:

interface Jewel {
    String name() ;
}

class Ruby implements Jewel {
    public String name (){
        return "红宝石";
    }
}

c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值