pro*_*cer 2 java design-patterns
我在类中有一系列实例函数.还有一个布尔实例变量,用于指定对象状态.几乎所有实例函数都依赖于此布尔状态.他们的身体看起来像
int f() {
if (state) {
//do stuff
}
else {
// do other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
除此之外,某些功能由州交换.因此,如果state为true,那么当用户调用f()时,它实际上就会运行.但是当状态为假时,当用户调用f()时会发生反义()运行.
所以一些函数在它们内部有开关,一些函数完全交换.
如果我用C++做这个,我可能会使用函数指针.我如何用Java做到这一点?策略模式?
看起来你想要状态模式.您可以将这些函数拉入状态接口,并为每个状态分别实现,而不是让每个函数检查状态:
public interface State {
void f();
void g();
void h();
}
public class StateA : State {
public void f() { do something; }
...
}
public class StateB : State {
public void f() { do something else; }
...
}
Run Code Online (Sandbox Code Playgroud)
然后,您将维护一个特定的State实例,而不是布尔变量:
State currentState = new StateA();
...
currentState = new StateB();
Run Code Online (Sandbox Code Playgroud)