0
点赞
收藏
分享

微信扫一扫

策略模式默写指导

MaxWen 2022-02-08 阅读 63

主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

场景:玩DNF时,我有个武器,晶体契约中我可以放置红色小晶体和白色小晶体给武器附魔。

解决:使用不同的晶体让武器攻击出不同的效果。

晶体都可以攻击,建接口

public interface Crystal {
    void attack();
}

不同晶体有自己的具体实现

public class Red implements Crystal {
    @Override
    public void attack() {
        System.out.println("火属性攻击");
    }
}

public class White implements Crystal {
    @Override
    public void attack() {
        System.out.println("光属性攻击");
    }
}

当我们选择不同的晶体时,相当于把晶体属性注入武器

public class Weapon {
    private Crystal crystal;
    public Weapon(Crystal crystal){
        this.crystal = crystal;
    }
    public void use(){
        crystal.attack();
    }
}

这样,我们在使用武器的时候,就可以根据注入不同晶体打出对应属性的攻击

    public static void main(String[] args) {
        Weapon weapon = new Weapon(new Red());
        weapon.use(); // 火属性攻击
    }
举报

相关推荐

0 条评论