public interface IMessage { void sendMessage(Message message); }
public class ReceiverAgent extends Agent implements IMessage {
List connectedAgents; //已连接代理列表
public void onStartup() {
connectedAgents = new ArrayList<>();
}
@Override
public void sendMessage(Message message) {
//向所有处于特定状态的当前已连接代理发送消息
for(ReceiverAgent agent : connectedAgents) {
if(agent.getState() == State.SPECIFIC_STATE) {
agent.receiveMessage(message);
}
}
}
public void receiveMessage(Message message) {
//处理接收到的消息
}
}
public class SenderAgent extends Agent {
IMessage messageInterface; //定义接口实例
public void onStartup() {
messageInterface = (IMessage) getAgent(ReceiverAgent.class); //获取接收代理实例
}
public void sendMessageToConnectedReceivers(Message message) {
messageInterface.sendMessage(message); //调用接口方法发送消息
}
}
这样,发送代理就可以向已连接的接收代理发送消息,而无需知道接收代理的具体类型。同时,接收代理也可以根据自身状态选择性地接收消息。