gpt4 book ai didi

java - 为一组功能切换状态的设计模式

转载 作者:行者123 更新时间:2023-11-30 05:52:38 25 4
gpt4 key购买 nike

我在一个类中有一系列的实例函数。还有一个指定对象状态的 boolean 实例变量。几乎所有的实例函数都依赖于这个 boolean 状态。他们的 body 看起来像

int f() {

if (state) {
//do stuff
}
else {
// do other stuff
}
}

除此之外,一些功能由状态交换。因此,如果 state 为真,则当用户调用 f() 它实际上会运行。但是当状态为 false 时,当用户调用 f() 时,会运行 antiF()。

所以有些函数内部有开关,有些函数完全交换。

如果我用 C++ 做这件事,我可能会使用函数指针。我将如何使用 Java 执行此操作?策略模式?

最佳答案

看起来你想要 state pattern .您不必让每个函数检查状态,而是将这些函数拉入状态接口(interface)并为每个状态分别实现:

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; }
...
}

然后您将维护一个特定的 State 实例,而不是 boolean 变量:

State currentState = new StateA();
...
currentState = new StateB();

关于java - 为一组功能切换状态的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com