特定の画面位置に画像を描画するGUI要素を使用する必要があります。 ユーザーがこの画像を選択すると、画像の周りに境界線が描かれます。 ここでは、ユーザーに特定の値を持つ写真を識別する別の枠線を追加します。GUI要素の図面を分割する
要素は、選択されていれば自分の内部状態を見て、次に自分自身を描画する方法を決定します。
graphic.drawImage(icon, x, y, null);
if (selected) {
drawBorder();
}
私はこの描画方法に他のものを追加するという考えは嫌いです。 私は、要素の動作を継承し、drawメソッドを上書きする新しいクラスを作成することを考えましたが、それは選択されたコード全体をすべての継承クラスに複製することを意味します。 サブクラスを作成せずにこの問題を解決するといいでしょうか?
あなたは正しいと思います。これを2つまたは3つの異なるビヘイビアに対してのみサブクラス化することはオーバーヘッドであり、後で変更する場合は、より高度なアプローチに変更することができます。今のところ、if elseをスイッチに変更しようとしています。ブール値が列挙型に選択されているため、描画に使用する動作を指定する必要があります。 – Janusz
これはかなり賢明な考えのようです。あまりにも扱いにくくなってしまうと、switch文を簡単にリファクタリングしてより高度なオブジェクト指向のアプローチを使用することができます。 –