今天我們來做一個QQ傳遞消息的程序,這個程序我自己做起來比較吃力,想了半天才做出來,確實不容易,希望能對自己的領悟能力有所幫助,希望自己更好,少說廢話了,上程序。
首先,我們要有一個QQ接口,它是用來定義QQ的功能的,主要的功能就是發送和接收消息方法;我們在實例化兩個QQ,分別是QQ1和QQ2,他們實現了QQ接口,實現了兩個方法;
除此之外,我們還需要有QQ服務器端,它的功能是緩存發送過來的消息和被問詢的功能,當問詢的QQ來詢問時,QQ服務器就會調取是否有該QQ的消息,若有就發送回去。
上面就是骨架,除此之外,我們還需要有一個Message類,這個類就是消息類,我們發送的就是這個類的若干對象,它里面有消息的一些屬性(從哪來,到哪去,消息內容是什么)。

下面細說
QQ服務器是最關鍵的類,需要把它仔細寫好,首先它是用來接收和轉發QQ消息的,所以每次當他接收消息時,它都要尋找那個要發送到的QQ號,然后在那個QQ號的消息列表上添加上傳送過來的消息;當每次一個QQ號來問詢是否有自己的消息時,他都是通過這個QQ號來查詢是否有該QQ號的消息列表。
綜上所述,我們就可以知道,在QQ服務器上一定有一個Map來存儲所有的QQ號碼和與之對應的消息列表List<Message>。
最后我們用一個測試類來測試我們的運行結果。

下面附代碼:
QQIterface類:
public interface QQInterface {
    
void sendMsg(Message msg);
    List
<Message> receiveMsg(String str);

}


QQ1類:
public class QQ1 implements QQInterface{

    
public void sendMsg(Message msg) {
        QQServer.receive(msg);
    }


    
public List<Message> receiveMsg(String str) {
        List
<Message> msg = QQServer.asked(str);
        Iterator
<Message> iter = msg.iterator();
        
while(iter.hasNext()){
            Message mm 
= iter.next();
            System.out.println(
"來源:"+mm.getFrom()+"發送到:"+mm.getTo()+"消息內容:"+mm.getContent());
        }

        
return msg;
    }


}

QQ2類:
public class QQ2 implements QQInterface{

    
public void sendMsg(Message msg) {
        QQServer.receive(msg);
    }


    
public List<Message> receiveMsg(String str) {
        List
<Message> msg = QQServer.asked(str);
        Iterator
<Message> iter = msg.iterator();
        
while(iter.hasNext()){
            Message mm 
= iter.next();
            System.out.println(
"來源:"+mm.getFrom()+"發送到:"+mm.getTo()+"消息內容:"+mm.getContent());
        }

        
return msg;
    }


}

Message類:
public class Message {
    
private String from;
    
private String to;
    
private String content;
    
public Message(String from,String to,String content){
        
this.setFrom(from);
        
this.setTo(to);
        
this.setContent(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;
    }


}


QQServer類:
public class QQServer {
    
public static Map<String,List<Message>> qqList = new HashMap<String,List<Message>>();
    
    
public static List<Message> qq1msgList = new ArrayList<Message>();
    
public static List<Message> qq2msgList = new ArrayList<Message>();
    
    
public static void receive(Message msg){
        
if("QQ1".equals(msg.getTo())){
            qq1msgList.add(msg);
            qqList.put(msg.getTo(), qq1msgList);
        }

        
else if("QQ2".equals(msg.getTo())){
            qq2msgList.add(msg);
            qqList.put(msg.getTo(), qq2msgList);
        }

        
    }

    
public static List<Message> asked(String str){
        List
<Message> msg = qqList.get(str);
        
return msg;
    }


}

測試類:
public class Test {

    
public static void main(String[] args) {
        
        Message msg1 
= new Message("QQ1","QQ2","我是QQ1,見到你很高興");
        Message msg2 
= new Message("QQ1","QQ2","吃飯了嗎");
        Message msg3 
= new Message("QQ1","QQ2","我想你了啊");
        Message msg4 
= new Message("QQ2","QQ1","我是QQ2,見到你我也很高興");
        Message msg5 
= new Message("QQ2","QQ1","我吃完了啊");
        Message msg6 
= new Message("QQ2","QQ1","嘻嘻");
        QQ1 q1 
= new QQ1();
        QQ2 q2 
= new QQ2();
        q1.sendMsg(msg1);
        q2.sendMsg(msg4);
        q1.sendMsg(msg2);
        q2.sendMsg(msg5);
        q1.sendMsg(msg3);
        q2.sendMsg(msg6);
        
        q2.receiveMsg(
"QQ2");
        q1.receiveMsg(
"QQ1");
        
    }


}


最后我們來看一下運行結果: