首页 > 编程语言 >中介者模式——java实现

中介者模式——java实现

时间:2022-11-03 17:22:29浏览次数:40  
标签:Member java String 模式 member member1 中介 message public

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

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("熊大","栗子图片");

 

标签:Member,java,String,模式,member,member1,中介,message,public
From: https://www.cnblogs.com/jzz-111jy/p/16855180.html

相关文章

  • JAVA自定义比较器(自定义规格)
    事情是政治面貌1群众2党员3团员。需求就是要把2在最前,之后是1,之后是3。对于以后再加入的类型都排在后面。也就是说既不是按照升序也不是按照降序要根据2>1>3>4>5>......
  • Java实现ip属地功能开发教程 | ip2region2.x使用总结
    ip属地功能开发-ip2region2.x使用总结一、前言如今许多软件如B站、微博、抖音等都加上IP归属地防止恶意评论,境外用户显示的是国家,国内的用户显示的省份。兴致一起,我便......
  • 【设计模式】适配器模式
    适配器模式的意图将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作(就是把接口不兼容的问题抹平,但不......
  • linux java 初始环境配置
    linux初始环境配置 1.设置IP查看虚拟机ip地址:ipaddr 修改ip地址Vi/etc/sysconfig/network~scrips/ifcfg-ens33(不一定是33动态的)BOOTPROTO=static在......
  • Java单例模式,看这一篇就够了
    在创建型设计模式中,我们第一个学习的是单例模式(SingletonPattern),这是设计模式中最简单的模式之一。 单例是什么意思呢? 单例就是单实例的意思,即在系统全局,一个类只创......
  • Java获取小数点后几位
    学习中遇见保留1小数点后位,选择有四种方法:方法:1、用format方法,语法“String.format("%.2f",数值)”;2、用DecimalFormat的format方法;3、用setScale方法进行四舍五入;4、用set......
  • java时间类型转换方法
    java时间类型转换方法1.Calendar转LocalDateTime/***Calendar转LocalDateTime*@paramcalendar*@return*/publicstaticLoca......
  • Java String常用API总结
    Stringname;用于字符串拼接StringBuildersb=newStringBuilder();获取字符串长度name.length());指定字符在此字符串中第一次出现的索引name.indexOf('z'));nam......
  • 关于java.lang.IllegalArgumentException: Unknown URL content://com.example.databa
    在学习《Android第一行代码》第八章的ProviderTest项目的时候,运行之后点击“AddToBook”按钮,出现如下问题:java.lang.IllegalArgumentException:UnknownURLcontent://......
  • Calico 路由反射模式权威指南
    1.概述作为Kubernetes最长使用的一种网络插件,Calico具有很强的扩展性,较优的资源利用和较少的依赖,相较于Flannel插件采用Overlay的网络,Calico可以通过三层路由的......