demonoga:
例:
私は、コンポーネントのほとんどが特定の背景色や特定のフォアグラウンドカラーを持つようにしたい、と私はデフォルトの色がオフと思われる場合は、それを変更したいです。これを達成するための主な方法は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);
}
}
これは正しいアプローチですか?また、そのような工場のようなA構築物のための特別な名前はありますか?
Niver:
はい、あなたのデザインは、あなたが抽象化を必要とすることを示唆しています。特定の方法の一般的な動作は、抽象クラスで囲むことができ、かつ特定の方法は、具体的なクラスによって実装されます。
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.
}
これは抽象クラスであるため、それがインスタンス化することはできません。あなたは、少なくとも一つの具体的な拡張子を持っている必要があり、その1のインスタンスを作成します。