当前位置:  开发笔记 > 编程语言 > 正文

调节使用哪种方法

如何解决《调节使用哪种方法》经验,为你挑选了1个好方法。

假设我有一个类,myClass有两个方法 - addOne()addTwo().

我有另一个类,添加.该类有一个实例布尔变量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.addOne()myClass.addTwo() ,我可以使用myClass.addNumber() .



1> Soggiorno..:

考虑继承和策略模式.

使用一个方法addNumber()创建一个抽象超类:

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

}

然后,如果您需要在类中添加一个,只需使用AddOne对象作为参数调用add().同样,如果需要添加两个,则使用AddTwo对象作为参数调用add().

myClass.add(new AddOne()); 
myClass.add(new AddTwo());

这称为策略模式,是这类问题的通用设计解决方案.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有