虚拟聊天室实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:

1. 新的具体聊天室中发送的图片大小不得超过20M

2. 新的具体聊天室中发送的文字长度不得超过100个字符。

3. 新的具体会员类可以发送图片信息和文本信息。

4. 新的具体会员类在发送文本信息时,可以在信息后加上时间。

修改客户端测试类,注意原有系统类代码和客户端代码的修改。

思路:各新增一个具体中介者类,具体同事类。

package mediator;

import java.util.Hashtable;

//具体中介者类,新增具体聊天室
public class ChatRoom extends AbstractChatroom{
    private Hashtable members = new Hashtable();

    @Override
    public void register(Member member) {
        if(!members.contains(member)){
            members.put(member.getName(),member);
            member.setChatroom(this);
        }
    }

    @Override
    public void sendText(String from, String to, String message) {
        Member member = (Member) members.get(to);
        if(message.length()>100){
            System.out.println("字符长度超过100,发送失败");
        }else {
            member.receiveText(from,message);
        }
    }

    @Override
    public void sendImage(String from, String to, String image) {
        Member member = (Member) members.get(to);
        if(image.length()>200){
            System.out.println("图片超过200M,发送失败");
        }else {
            member.receiveImage(from, image);
        }
    }
}

 

package mediator;

import java.util.Scanner;

//新增具体会员类,超级会员
public class SuperMember extends Member {
    public SuperMember(String name) {
        super(name);
    }

    @Override
    public void sendText(String to, String message) {
        System.out.println("超级会员发送文本:");
        Scanner sc = new Scanner(System.in);
        System.out.print(name + "请输入时间:");
        String time = sc.next();
        message = message + time;
        chatroom.sendText(name, to, message);
    }

    @Override
    public void sendImage(String to, String image) {
        System.out.println("超级会员发送图片:");
        chatroom.sendImage(name,to,image);
    }
}
AbstractChatroom chat = new ChatRoom();
        Member member1,member2;

        member1 = new SuperMember("熊大");
        member2 = new SuperMember("熊二");

        chat.register(member1);
        chat.register(member2);

        member1.sendText("熊二","熊二,给你果子");
        member1.sendImage("熊二","果子图片");
//用于测试长度 member1.sendText(
"熊二","111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); member1.sendImage("熊二","111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); member2.sendText("熊大","熊大,给你栗子"); member2.sendImage("熊大","栗子图片");

 

原文地址:http://www.cnblogs.com/jzz-111jy/p/16855180.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性