我正在设计一个调用复杂逻辑的决策系统,我可能需要使用很多嵌套的if/else语句,
我想看看是否有更好的设计模式,可以帮助我简化系统的结构,并为未来的改进提供一定的可扩展性。
这个项目的问题可以简化为:
它们是PricePolicy (合同/批发/零售/折扣),RequestType (买卖)和ProductType (时尚/家庭/玩具)。
每个决策都基于请求的全部3个属性,因为未来价格策略的类型可能会发生变化,并且会在决策过程中添加更多的属性。
例如:
switch(ProductType) {
case Fashion:
switch(PricePolicy) {
case Contract:
if(Request == Buy) {
// making a decision.
} else {
}
}
}
}请分享你的想法和建议谢谢。
干杯,鲍勃
发布于 2010-11-13 02:29:32
也许你想要一个Rete规则引擎。试试Drools。
或者数据驱动的决策表。
如果你想要一个类解决方案,可以考虑多态性。用Strategy或Visitor之类的类替换所有这些if/then/else。
关键是稳定的接口。如果你能保持它的稳定性,并改变底层的实现,你就成功了。
发布于 2010-11-13 02:32:45
使用n维数组,并以这种方式查找/查询/修改您的决策。
发布于 2010-11-13 02:40:13
正如ziplin建议的那样,如果每个组合都有一个决定,我会考虑3d数组(即。不是决策的“稀疏”分布--我认为这是正确的术语)。这将要求您能够将决策逻辑封装在可存储在数组中的表达式中。对于稀疏分布,邻接列表可以以类似的方式使用。
https://stackoverflow.com/questions/4167835
复制相似问题