所以我为一个班级编写代码" Skill"这将由另一个类"计算器"调用。 Skill类通过调用其方法来影响Calculator的当前实例。
public class Calculator {
int number = 0;
...
Skill sk = new Skill();
sk.hitSkill(true);
...
public void setNumber(int newValue) {
number += newValue;
}
}
同时,"技能" class看起来像这样:
public class Skill {
Calculator calc = new Calculator();
public void hitSkill (boolean someConditions) {
if (someConditions) {
calc.setHitNumber(20);
}
}
以上对我没有好处,因为" calc"是一个实例,但不是我希望受到影响的计算实例。
我有Skill会使用的计算器的getter和setter - 但它需要一个Calc实例才能工作。确切地说,它需要调用它的 Calculator实例,而不仅仅是任何Calculator实例。
为什么我不让计算器方法保持静态?因为它们影响我需要能够改变的变量,这些变量不是静态的。
有人有任何建议吗?
答案 0 :(得分:4)
而不是labels = beauty|beauty-stuff|beauty-salon|beauty-bar
,为new Calculator()
创建一个带有Skill
参数的构造函数。
Calculator
答案 1 :(得分:1)
它看起来像是你作文中的一个循环。根据{{1}},您Skill
取决于Calculator
...您需要取消此操作。您可以根据您对域名的理解做出此决定。
一个明显的解决方案是将计算器注入Skill
,因此:
Skill::hitSkill()
如果技能总是使用相同的计算器,则可以在构造时注入public class Skill {
public void hitSkill (boolean someConditions, Calculator calc) {
if (someConditions) {
calc.setHitNumber(20);
}
}
public class Calculator {
int number = 0;
...
Skill sk = new Skill();
sk.hitSkill(true, this); // <== pass in your instance
...
public void setNumber(int newValue) {
number += newValue;
}
}
(而不是每次调用Calculator
)。