java - 调理使用哪种方法

标签 java bluej

假设我有一个类 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/

相关文章:

java - 如何在java中添加到数组中,然后使用for循环打印出来?

java - 将英尺和英寸转换为英寸(多个输入转换为一个输入)

java - 尝试打印数组

java - Android Studio 倒数计时器

Java - 从方法的参数获取数组位置

java - Blue J 显示正在运行,但不会打开结果窗口

java - 无法在 Java 上加载图像 (BlueJ)

java - Android 应用程序在我的 Activity 中找不到按钮处理程序的方法,导致应用程序在手机上崩溃

java - yammer @Timed 将值保留为零

java - Android 上的 Thrift 客户端