Java 我应该选择什么方法来代替乘法重载?
我在一些非最终类中使用了公共方法1(…),它在我们的项目中广泛使用 但我需要在这个类的内部最后一个私有方法中添加一些if条件,并且不要破坏以前实现的其他业务逻辑:(我们得到了嵌套方法) 我是否应该重载所有方法,以便通过参数列表引入一些布尔标志,以便在某些情况下切换到我的特殊条件,或者我可以在类中创建一个私有字段,并将其放入我的Java 我应该选择什么方法来代替乘法重载?,java,oop,Java,Oop,我在一些非最终类中使用了公共方法1(…),它在我们的项目中广泛使用 但我需要在这个类的内部最后一个私有方法中添加一些if条件,并且不要破坏以前实现的其他业务逻辑:(我们得到了嵌套方法) 我是否应该重载所有方法,以便通过参数列表引入一些布尔标志,以便在某些情况下切换到我的特殊条件,或者我可以在类中创建一个私有字段,并将其放入我的私有metod4(…){…}?在最后一种方式中,我会得到臭味代码吗 非常感谢。我不知道您的项目架构是什么,以及可以接受多少重构,但我的第一个想法是设计模式,因为当您的对象改
私有metod4(…){…}
?在最后一种方式中,我会得到臭味代码吗
非常感谢。我不知道您的项目架构是什么,以及可以接受多少重构,但我的第一个想法是设计模式,因为当您的对象改变其行为和内部状态时,它是一个很好的选择。对象将显示为更改其类 但是这里的实际上更多的是关于封装的。由于所有方法(M2、M3、M4)都是私有的,因此不需要担心 不破坏以前实现的其他业务逻辑:(我们得到了嵌套方法) 只是因为他们没有接触到其他人。因此,作为底线——如果影响公众利益,这些变化最有可能是适当的。请注意,这里的链接对于保存最终结果的处理至关重要。方法4的行为应该明显改变。因此,如果您建议的话,重载私有方法是一个很好的选择 课堂上的私人领域 在调用树中计算,而不是以参数形式传递 也许如果你发布更多的信息或代码,答案会更有帮助
- 干杯
public class C {
protected final A a;
protected final B b;
protected X x;
public C(A a, B b) { }
public void setX(X x) { }
public void method1() {
method2();
}
...
或者把它们结合起来
一个方法使用相同的参数连续调用另一个方法,看起来需要面向对象的重写。如果你的类不是final,那么你可以创建一个子类并重写最后一个方法。我不能这样做,因为method1是静态的
public class C {
protected final A a;
protected final B b;
protected X x;
public C(A a, B b) { }
public void setX(X x) { }
public void method1() {
method2();
}
...