gpt4 book ai didi

oop - 基类定义了许多 protected 方法 : Is it a good OOP design?

转载 作者:行者123 更新时间:2023-12-01 10:13:18 26 4
gpt4 key购买 nike

我写了一个基类,它定义了许多 protected 方法。这些方法在其子类中被调用。这些方法为其子类定义了基本操作。例如:

class Base{
protected void foo(){}
protected void bar(){}
}

class Sub1 extends Base{//The sub class only needs Base.foo()
public void po(){
...
foo();
...
}
}

class Sub2 extends Base{//The sub class only needs Base.bar()
public void ko(){
...
bar();
...
}
}

class Sub3 extends Base{//The sub class needs both Base.bar() and Base.foo()
public void lo(){
...
bar();
...
foo();
}
}

我只是想知道它是否是一个好的 OOP 设计?阅读源码,我们知道Sub1根本不需要Base.bar()Sub2也不需要Base。 foo() 完全没有。我认为这有点多余。但我不知道更好的解决方案,任何人都可以提供一些建议吗?谢谢!

最佳答案

通常,您应该在设计中避免此类对象依赖性。如果 foo() 和 bar() 的功能在派生类中没有改变,您可能希望将其放在外部类中并改用该外部类:

class Base{

}

class Helper1 {
public void foo(){}
}

class Helper2 {
public void bar(){}
}

class Sub1 extends Base{
private Helper1 a = new Helper1();
private Helper2 b = new Helper2();

public void po(){
...
a.foo();
...
b.bar();
}
}

class Sub2 extends Base{
private Helper2 b = new Helper2();

public void ko(){
...
b.bar();
...
}
}

这个 foo & bar 的例子看起来不太好。您的问题可能是对对象的责任分配不当或滥用继承。发布真实代码将有助于编写更好的答案。

关于oop - 基类定义了许多 protected 方法 : Is it a good OOP design?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com