Java: 实现默认的超级 class 将为所有子class 设置成员
Java: Implementing a default super class that will set members for all subclasses
示例:
我想让大多数组件具有特定的背景颜色和特定的前景色,如果默认颜色似乎关闭,我想更改它。实现此目的的主要方法是 setBackgroundColor() 和 setForegroundColor()。
对我来说最合理的答案是:
public class DefaultComponent {
private static final BACKGROUND_COLOR = Color.GRAY;
private static final FOREGROUND_COLOR = Color.WHITE;
public static void setComponent(Component comp) {
comp.setBackground(backgroundColor);
comp.setForeground(foregroundColor);
}
}
这是正确的做法吗?还有这样的构造有一个特殊的名称,例如在工厂中吗?
是的,您的设计表明您需要抽象。可以将某些方法的通用行为封装在抽象class中,具体的方法将由具体的classes.
实现
public abstract class GenericComponent {
private static final BACKGROUND_COLOR = Color.GRAY;
private static final FOREGROUND_COLOR = Color.WHITE;
public static void setComponent(Component comp) {
comp.setBackgroundColor(backgroundColor);
comp.setForegroundColor(foregroundColor);
}
//here provide a list of abstract methods that each extension class will implement.
}
由于这是一个抽象 class,因此无法实例化。您将需要至少有一个具体的扩展,并创建该扩展的实例。
示例:
我想让大多数组件具有特定的背景颜色和特定的前景色,如果默认颜色似乎关闭,我想更改它。实现此目的的主要方法是 setBackgroundColor() 和 setForegroundColor()。
对我来说最合理的答案是:
public class DefaultComponent {
private static final BACKGROUND_COLOR = Color.GRAY;
private static final FOREGROUND_COLOR = Color.WHITE;
public static void setComponent(Component comp) {
comp.setBackground(backgroundColor);
comp.setForeground(foregroundColor);
}
}
这是正确的做法吗?还有这样的构造有一个特殊的名称,例如在工厂中吗?
是的,您的设计表明您需要抽象。可以将某些方法的通用行为封装在抽象class中,具体的方法将由具体的classes.
实现public abstract class GenericComponent {
private static final BACKGROUND_COLOR = Color.GRAY;
private static final FOREGROUND_COLOR = Color.WHITE;
public static void setComponent(Component comp) {
comp.setBackgroundColor(backgroundColor);
comp.setForegroundColor(foregroundColor);
}
//here provide a list of abstract methods that each extension class will implement.
}
由于这是一个抽象 class,因此无法实例化。您将需要至少有一个具体的扩展,并创建该扩展的实例。