有一个代码接受 json 数据,并根据类型执行某些操作。所有处理代码都在 if 中,添加新类型被证明是不方便的。现在我计划将处理转移到每种类型的单独服务中,并使用 DTO 转移信息。但是,它仍然没有消除 if 的复杂性和数量。我考虑过用 switch / match 替换它的可能性,但这个选项似乎并不完全正确。我在代码的另一部分遇到了类似的问题,需要根据状态进行不同的处理。
if ('text' === $message->getType()) {
// code
}
if ('poll' === $message->getType()) {
// code
}
if ('image' === $message->getType()) {
// code
}
我在理论上对 OOP 有点熟悉,在实践中,有意义的是,它很少使用。据我所知,多态应该有助于解决问题,但我不明白如何正确应用它。
这就像一种策略。
if但我想在你的情况下,他的情况仍然需要但为了更容易解决问题,我建议制作一张地图。清楚地:
我们为具有逻辑的类选择一个接口:
这里的输入和输出数据是你需要的。例如,可能没有输入参数。或者也许返回一些东西。这很清楚。
我们制作不同的类来实现接口
接下来,制作了某种存储链接的管理器:
常量很可能在每个类中被定义为一个属性,并在属性中代替将返回值
HANDLER_TEXT的类型。可以在所有这些处理程序的某个基类中编写基方法。TextHandler::getName()$namegetName此外,例如,我们收到
$_GET带有某些参数的请求。例如,$_GET['handler_type']将有一个必需的值。事实证明:PS您可以创建一个基类并将其传递
data给构造函数,然后调用处理程序->execute();