Javaの:すべてのサブクラスのメンバーを設定しますデフォルトのスーパークラスの実装

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のインスタンスを作成します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=212964&siteId=1