先創建一個message類,屬性為發送方、接收方、內容。
Message public class Message { private String from; private String to; private String content; public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
創建QQInterface接口,內部創建發送和接收消息的方法。
QQInterface public interface QQInterface { void sendMsg(Message msg); Message receiveMsg(String name); }
創建QQServer服務器,作為消息的轉運站。
QQServer import java.util.HashMap; import java.util.Map; public class QQServer { static Map<String,Message> serverMap = new HashMap<String,Message>(); public static void serverReceiveMsg(Message msg){ serverMap.put(msg.getTo(),msg); System.out.println(msg.getFrom()+" "+" "+msg.getContent()); } public static Message asked(String name){ Message msg = serverMap.get(name); return msg; } }
QQ1,實現QQInterface接口及方法,作為發送方。
QQ1 public class QQ1 implements QQInterface{ public static void main(String[] args){ Message msg = new Message(); msg.setFrom("QQ1"); msg.setTo("QQ2"); msg.setContent("I am QQ1 。"); QQ1 q = new QQ1(); q.sendMsg(msg); } public void sendMsg(Message msg){ QQServer.serverReceiveMsg(msg); } @Override public Message receiveMsg(String name) { Message msg = QQServer.asked(name); System.out.println("******"+msg.getContent()); return msg; } }
QQ2,實現QQInterface接口及方法,作為接收方。
QQ2 public class QQ2 implements QQInterface{ public static void main(String[] args){ Message msg = new Message(); msg.setFrom("QQ2"); msg.setTo("QQ1"); msg.setContent("I am QQ2 。"); QQ2 q = new QQ2(); q.sendMsg(msg); } public void sendMsg(Message msg){ QQServer.serverReceiveMsg(msg); } @Override public Message receiveMsg(String name) { Message msg = QQServer.asked(name); System.out.println("******"+msg.getContent()); return msg; } }
創建Test測試類
Test import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { public static void main(String[] args){ Map<String,List<Message>> QQMap = new HashMap<String,List<Message>>(); List<Message> msgList = new ArrayList<Message>(); // 第一次發送消息 Message msg1 = new Message(); msg1.setFrom("QQ1"); msg1.setTo("QQ2"); msg1.setContent("HI!"); msgList.add(msg1); QQMap.put(msg1.getTo(), msgList); // 第二次發送消息 Message msg2 = new Message(); msg2.setFrom("QQ1"); msg2.setTo("QQ2"); msg2.setContent("Hello World !"); msgList.add(msg2); QQMap.put(msg2.getTo(), msgList); List<Message> qq2MsgList = QQMap.get("QQ2"); for(Message m:qq2MsgList){//打印QQ1發給QQ2消息 System.out.println(m.getContent()); } } }
結果顯示