假设我有一个类 myClass,它有两个方法 - addOne() 和 addTwo()。
我还有一门课,添加。这个类有一个实例 boolean 变量,oneOrTwo。此变量决定是否对 myClass 对象使用 addOne() 或 addTwo()。
我已经编写了所有使用 addOne() 方法的代码行,而且有很多行。我不想做的是复制它们,像这样:
if (oneOrTwo)
{
// all lines of code for addOne()
}
else
{
//all lines of code for addTwo()
}
addOne() 的代码行包括很多 myClass.addOne() 调用(当然我已经创建了一个新对象并且一切正常,但是我在这里一般来说是为了避免使这篇文章变得不必要的大帖子)。 我的问题是我是否可以做类似的事情:
if (oneOrTwo)
addNumber() = addOne();
else
addNumber() = addTwo();
然后,我可以使用 myClass.addNumber() 而不是使用 myClass.addOne() 或 myClass.addTwo() .
最佳答案
考虑继承和策略模式。
使用一个方法 addNumber() 创建一个抽象父类(super class):
public abstract class AddNumber {
public abstract void addNumber();
}
创建两个子类,每个子类都有自己的 addNumber() 实现:
public class AddOne extends AddNumber {
@Override
public void addNumber() {
// code to add one
}
}
public class AddTwo extends AddNumber {
@Override
public void addNumber() {
// code to add two
}
}
在您的主类中创建一个将 AddNumber 对象作为参数的方法:
public class MyClass() {
public void add(AddNumber addNumber) {
addNumber.addNumber();
}
// other MyClass stuff
}
然后,如果您需要将一个添加到您的类中,您只需调用 add() 并将 AddOne 对象作为参数。同样,如果您需要添加两个,则可以使用 AddTwo 对象作为参数调用 add()。
myClass.add(new AddOne());
myClass.add(new AddTwo());
这称为策略模式,是针对此类问题的常见设计解决方案。
关于java - 调理使用哪种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32397190/