【发布时间】:2023-01-07 02:42:07
【问题描述】:
我知道大多数条件地狱都可以通过使用策略、命令、责任链等设计模式以更面向对象的方式进行简化。
不包含许多侧分支(同一级别的分支)但嵌套很深并且每个条件都取决于前一个条件的结果的条件呢?
这是一个例子:
nestedFunction(input: Input){
if(input!=null){
a = func1(input)
if(p(a)){ // where p() is a predicate
b = func2(a)
if(p(b)){
c = func3(b)
if(p(c)){
// dosomething1
} else {
// dosomething2
}
} else {
// dosomething3
}
} else {
// dosomething4
}
} else {
// dosomething5
}
}
我可以通过将每个嵌套的嵌套条件提取到不同的函数中来简化它,如下所述:https://blog.codinghorror.com/flattening-arrow-code/
但我很好奇是否有更面向对象的友好方式来做到这一点?
【问题讨论】:
标签: design-patterns