我有一个专门的对象类,它向它的组件发送消息,以便它们可以根据需要进行更改。对象类允许我混合和匹配组件,这样我就可以拥有具有相似功能的不同对象,而无需庞大的继承树。(我认为这被称为组件模式。)这就是我想要做的:
//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 类,以便从中获取不同类类型的信息?我是否需要更改组件类处理消息的方式?