- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为游戏中的咒语设计类。
首先,我有一个拥有法术书的玩家,其中指示该玩家可以使用哪些法术
public class Player {
private List<Class<? extends Spell>> speellBook;
}
现在我创造了一些咒语
public abstact class Spell {
public abstact double getDmg();
private double position x;
private double position y;
}
public class FireBolt extends Spell {
public double getDmg() { return 15; }
}
public class FrostBolt extends Spell {
public double getDmg() { return 10; }
}
现在我想显示一个关于 FireBolt 的工具提示,其中显示该法术在不实例化的情况下会造成 15 点伤害。它应该只在玩家真正施放它时实例化。
我已经想到了静态场,但静态场不能被真正的咒语覆盖。
然后我想到了一个单例模式,但是由于我也将当前位置存储在我的咒语中,所以这也不起作用
这有什么标准模式吗?我只找到了原型(prototype)模式,但因为我需要一个单例,所以它是不可继承的
最佳答案
您正在尝试对类应用继承(对不同的咒语统一调用 getDmg
方法),避免对象实例化。正如您已经注意到的,这些需要静态字段和静态方法,但它们不适用于继承。我已经见过很多次了,但它不起作用。
我建议创建模板对象并使用它们来显示工具提示。示例:
public class SpellTooltip {
private Map<Class<? extends Spell>, Spell> templates = new HashMap<>();
{
templates.put(Firebolt.class, new Firebolt());
templates.put(Frostbolt.class, new Frostbolt());
}
public int getSpellDamage(Class<? extends Spell> clazz) {
return templates.get(clazz).getDmg();
}
}
实现可能会根据设计的复杂程度而有所不同。按原样使用它,您应该始终记住向 map 添加新类型。
关于java - 如何设计一个类层次结构,在不实例化的情况下提供有关子类的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35832294/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!