今天我们来做一个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");
        
    }

} 
最后我们来看一下运行结果: