我正在设计一个调用复杂逻辑的决策系统,可能我需要使用很多嵌套的 if/else 语句,
我想看看是否有更好的设计模式可以帮助我简化系统的结构并为将来的改进提供一定的可扩展性。
项目的问题可以简化为:
我们现在需要为一个请求做出决定,它有 3 种类型的属性,可能还有更多。它们是 PricePolicy(契约(Contract)/批发/零售/折扣)、RequestType(购买/销售)和 ProductType(时尚/家居/玩具)。
每个决策都是基于请求的所有3个属性,因为 future 价格政策的类型可能会发生变化,更多的属性会被添加到决策过程中。
所以我试图避免制作一个大的 switch 语句,这对于 future 的扩展来说是丑陋的和有缺陷的。如:
switch(ProductType) {
case Fashion:
switch(PricePolicy) {
case Contract:
if(Request == Buy) {
// making a decision.
} else {
}
}
}
}
请分享您的想法和建议谢谢。
干杯,
鲍勃
最佳答案
也许你想要一个 Rete 规则引擎。尝试流口水。
或者数据驱动的决策表。
如果您想要一个类解决方案,请考虑多态性。将所有 if/then/else 情况替换为 Strategy 或 Visitor 等类。
关键是接口(interface)稳定。如果你能保持稳定,并改变下面的实现,你就明白了。
关于java - 什么是复杂决策系统的正确设计模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4167835/