コンポーネントにメッセージを送信して、必要に応じて自分自身を変更できるようにする特殊なオブジェクト クラスがあります。オブジェクト クラスを使用すると、コンポーネントを組み合わせて組み合わせることができるため、巨大な継承ツリーを持たなくても、同様の機能を持つさまざまなオブジェクトを作成できます。(これはコンポーネントパターンと呼ばれていると思います。)ここで私がやりたいことは次のとおりです。
//MyObject.java
public class MyObject {
private HashSet<MyComponent> components_;
void send(Message message) {
for (MyComponent component : components_) {
component.receive(message);
}
}
// other unrelated methods and variables...
}
// MyComponent.java
public interface MyComponent {
public void receive(Message message);
// other unrelated methods...
}
// RendererComponent.java
public class RendererComponent implements MyComponent {
public void receive(Message message) {
if (message.getType() == Message.Type.POSITION_CHANGED) {
Point positionDifference = message.getInfo();
redraw(positionDifference);
} else if (message.getType() == Message.Type.SCORE_CHANGED) {
Integer score = message.getInfo();
redraw(score);
} // else if...
}
private void redraw(Point positionDifference) {
// draws item at new position...
}
private void redraw(Integer score) {
// draws the new score...
}
// other unrelated methods and variables..
}
多くのコンポーネントがあり、それらはさまざまな種類のメッセージを受け取ります。さまざまなクラス タイプの情報を取得できるように Message クラスを作成するにはどうすればよいですか? コンポーネント クラスがメッセージを処理する方法を変更する必要がありますか?