Java - 为什么要使用状态设计模式而不是将状态保存在变量中?

Java - why would one use the state design pattern over saving the state in a variable?

我是 Java 的新手,如果这听起来像是一个愚蠢的问题,请原谅。

当您可以只保存给定对象的状态时,为什么在遵循状态设计模式(为每个状态创建接口、上下文和具体子 类 时付出如此大的努力在一个变量中,然后根据 switch 和 if-else 语句做出决定?

if-elseswitch 语句鼓励脆弱的代码和职责混合。

每次你 add/remove/update 一个状态,相同的 class 和方法必须改变或调用一个子方法,所以你增加了在任何状态逻辑中引入回归的几率,而你会改为更改其中之一。

通过分离关注点,状态不耦合;您可以轻松修改它们,而不必冒更改任何其他文件的风险。您甚至可以通过单元测试来验证这一点。