java如何避免if
我有一个Request对象,其字段Request_类型和其他字段的数量。请求类型可以是“additionRequest”、“deletionRequest”、“informationRequest”。 根据请求类型,对请求对象中的其他字段进行不同的处理
我头脑简单的方法是
if additionRequest
algorithm1
else if deletionRequest
algorithm2
else if deletionRequest
algorithm3
end
我如何避免这些if语句并仍然应用正确的算法
# 1 楼答案
如果希望避免使用条件语句,则可以利用面向对象的功能,例如:
# 2 楼答案
在我看来,也许一种命令模式可以在这里派上用场。如果您为这些命令创建了一个对象结构,并将要在对象中执行的算法封装起来,那么您可以构造特定的子对象,然后使用命令的“execute”方法调用算法。只需确保您使用的是多态引用:
将成为
https://en.wikipedia.org/wiki/Command_pattern
# 3 楼答案
在这种情况下使用
HashMap<RequestType, RequestHandler>
。RequestHandler可以是一个接口,它将针对您想要处理的每种情况来实现希望这有帮助
# 4 楼答案
面向对象的解决方案总是将逻辑与数据结合起来。在这种情况下,在请求对象本身中包含您希望请求执行的任何操作,而不是(大概)传递纯数据
差不多
其他任何事情,比如创建函数映射、创建一个薄的抽象层或应用某种模式,都是一种变通方法。只有当第一种溶液不能应用时,这些方法才适用。如果
Request
对象不在您的控制之下,例如自动生成或第三方类,则可能会出现这种情况# 5 楼答案
您可以创建RequestType ReturnType的key:String、value:Function的映射。根据请求的类型,它将调用相应的函数
例如:
内部请求处理程序
注意:如果不同的响应不同,您可能需要创建响应接口。不同的响应类型将从响应接口继承