24.12.03

实验19:中介者模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解中介者模式的动机,掌握该模式的结构;

2、能够利用中介者模式解决实际问题。

[实验任务一]:虚拟聊天室

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

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

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

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

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

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

实验要求:

1.      画出对应的类图;

2.      提交源代码;

3. 注意编程规范。

 

  1. 类图:

 

 

  1. 新增的源代码:

import java.time.LocalDateTime;

 

public class NewChatGroup extends AbstractChatGroup {

 

    @Override

    public void sendText(String from, String to, String message) {

        if (message.length() > 100) {

            System.out.println("文本信息过长,无法发送!");

        } else {

            System.out.println(from+"发送给"+ to +":  " +message);

        }

    }

 

    @Override

    public void sendImage(String from, String to, String image) {

        // 假设image是图片大小的字符串表示

        try {

            int imageSize = Integer.parseInt(image);

            if (imageSize > 20) {

                System.out.println("图片大小超过20M,无法发送!");

            } else {

                System.out.println(from+"发送图片给"+ to +":  " +message);

            }

        } catch (NumberFormatException e) {

            System.out.println("图片大小格式错误!");

        }

    }

}

 

import java.time.LocalDateTime;

 

public class NewMember extends Member {

 

    public NewMember(String name) {

        super(name);

    }

 

    @Override

    public void sendText(String to, String message) {

        String timestamp = LocalDateTime.now().toString();

        System.out.println("新会员发送文本信息:");

        chatroom.sendText(name, to, message + " [发送时间:" + timestamp + "]");

    }

 

    @Override

    public void sendImage(String to, String image) {

        System.out.println("新会员发送图片信息:");

        chatroom.sendImage(name, to, image);

    }

}

 

public class Client {

    public static void main(String[] args) {

        AbstractChatroom happyChat = new NewChatGroup();

        Member member1, member2, member3, member4, member5, newMember;

       

        member1 = new DiamondMember("张三");

        member2 = new DiamondMember("李四");

        member3 = new CommonMember("王五");

        member4 = new CommonMember("小芳");

        member5 = new CommonMember("小红");

        newMember = new NewMember("新用户");

       

        happyChat.register(member1);

        happyChat.register(member2);

        happyChat.register(member3);

        happyChat.register(member4);

        happyChat.register(member5);

        happyChat.register(newMember);

       

        member1.sendText("李四", "李四,你好!");

        member2.sendText("张三", "张三,你好!");

        newMember.sendText("张三", "今天是个好日子!");

        newMember.sendImage("李四", "18");  // 假设图片大小为18M

        newMember.sendImage("李四", "25");  // 图片大小超过限制

        newMember.sendText("小红", "这是一段长文本测试......................................................................................");

    }

}

posted on 2024-12-03 15:30  Daniel350  阅读(11)  评论(0)    收藏  举报