有时候是类的关系可能是这样的:
Case 1 ClassA::MethodA() calls ClassB::MethodA() calls ClassC::MethodA()
需要去层层剥开。
有的时候可能是这样的:
Case 2 ClassC::MethodA() calls ClassC::MethodA1() && ClassC::MethodA2() && ClassC::MethodA3()
需要分块,以求分而治之。
但如果运用不恰,Case1就可能变成这样:
Case 3 ClassA::MethodA() calls ClassA::MethodA1() && ClassA::MethodA2() && ClassA::MethodA3()
ClassA::MethodA1() calls ClassB::MethodA1() calls ClassC::MethodA1()
ClassA::MethodA2() calls ClassB::MethodA2() calls ClassC::MethodA2()
ClassA::MethodA3() calls ClassB::MethodA3() calls ClassC::MethodA3()
剥开不充分,就分块了。
多么可怕的膨胀啊!从这样的角度看很清楚看到Case3是个糟糕的决定,但试想下在实际项目的茫茫代码可能这样的问题就不会那么的显而易见了。所以在无论在设计、编码还是检查都应该注意其中蕴藏的剥桔子和切苹果的区别。