在我的UI项目中,我有几个共享相同标题样式的屏幕,只有文本特定于屏幕。什么是实现这个的好方法?
或
希望它有意义......
答案 0 :(得分:3)
你真的需要一个抽象类吗?
public class UIScreen {
public UIScreen(String headerText) {
//set everything up here w/ the right text
}
}
// elsewhere ....
UIScreen mainScreen = new UIScreen("Main Screen");
答案 1 :(得分:0)
使用通用头方法创建抽象类,并为要实现的所有子类定义一个最佳的方法。
答案 2 :(得分:0)
取决于您是否希望超类能够被实例化。这就像拥有Animal
超类和Dog
和Cat
子类。您是否希望人们能够创建通用的Animal
?
如果是这样,那应该是正常的课程。如果没有,则应声明abstract
。
所以最终的问题是:是否存在默认行为?如果没有,那就把它抽象化。
答案 3 :(得分:0)
答案 4 :(得分:0)
当行为保持变化时......将其封装在abstact类或接口中。
最好有一个
Abstract class, with the non-abstract method to create the Header,
and an Abstract method to create the text
..在子类中,你可以通过实现抽象方法来创建你选择的文本。
答案 5 :(得分:0)
"在超类中有抽象方法来创建组件,子类将实现这些方法来创建组件。"
在我看来,这个解决方案更容易维护。
答案 6 :(得分:0)
您可以稍微更改选项
public abstract class SuperUI {
private HeaderComponenet headerComponent;//have getter setter
}
public class BaseUI extends SuperUI{
private void changeHeaderComponent(){
headerComponent.setText("Changed");
}
}
public class HeaderComponent extends JComponent{
public HeaderComponent(){
//create the default header here
}
}
在这种情况下,如果必须更改默认标题组件,则不必更改SuperUI,因为您已将标题与SuperUI分开,如果需要,您可以对页脚组件执行相同的操作。
答案 7 :(得分:0)
我的问题是子类是否有任何有用的功能?如果没有,为什么你不只是拥有一个具体的类并传递一些数据容器来填充字段?
如果没有行为差异,只需将数据和/或协作者传递给构造函数或通过属性设置器,就可以获得更好的效果。