假设我有以下代码(API要求是两种几乎相似的方法):
method1() {
...
internalMethod();
...
}
method2() {
...
internalMethod();
...
}
internalMethod() {
...
internalMethodHelper();
...
}
internalMethodHelper() { ... }
并假设我需要添加一个新的
method3()
,该实现需要internalMethod()
和internalMethodHelper()
的另一个签名。因此,按照我的想法,只有一种方法可以解决这种情况:
method1() {
...
internalMethod(sign1);
...
}
method2() {
...
internalMethod(sign1);
...
}
method3() {
...
internalMethod(sign2);
...
}
internalMethod(sign1) {
...
internalMethodHelper(sign1);
...
}
internalMethod(sign2) {
...
internalMethodHelper(sign2);
...
}
internalMethodHelper(sign1) { ... }
internalMethodHelper(sign2) { ... }
我对吗 ?还是在这种情况下重载方法是非常糟糕的代码设计?
感谢您的所有回答!
最佳答案
IMHO方法重载不是代码异味。如果您需要在此上下文中重载方法,请执行此操作。设计模式不是工具,而是规则。应该明智地使用它们,切勿强行使用。
另外,如果您编写新类并在其中添加该方法,则请自己问这些问题。
新班级会按照所说的去做吗?
编写的方法是否如其所说?
如果是,则可以提取方法并放入其他类型。否则,请坚持超载,这里没有糟糕的设计。