12.6

软件设计                  石家庄铁道大学信息学院

 

实验19:中介者模式

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

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

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

 
   

 

 

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

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

  1. 新的具体聊天室中发送的图片大小不得超过20M。
  2. 新的具体聊天室中发送的文字长度不得超过100个字符。
  3. 新的具体会员类可以发送图片信息和文本信息。
  4. 新的具体会员类在发送文本信息时,可以在信息后加上时间。

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

实验要求:

1.     画出对应的类图;

 
   

 

2.     提交源代码;

public abstract class AbstractChatroom

{

       public abstract void register(Member member);

       public abstract void sendText(String from,String to,String message);

       public abstract void sendImage(String from,String to,String message);

}

import java.util.*;

 

public class ChatGroup extends AbstractChatroom

{

       private Hashtable members=new Hashtable();

      

       public void register(Member member)

       {

              if(!members.contains(member))

              {

                     members.put(member.getName(),member);

                     member.setChatroom(this);

              }

       }

      

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

   {

     Member member=(Member)members.get(to);

     String newMessage=message;

     newMessage=message.replaceAll("日","*");

         member.receiveText(from,newMessage);

   }

  

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

   {

     Member member=(Member)members.get(to);

     //模拟图片大小判断

     if(image.length()>5)

     {

          System.out.println("图片太大,发送失败!");

     }

     else

     {

          member.receiveImage(from,image);

     }

   }

}

public class Client

{

       public static void main(String args[])

       {

              AbstractChatroom happyChat=new ChatGroup();

              Member member1,member2,member3,member4,member5;

              member1=new DiamondMember("张三");

              member2=new DiamondMember("李四");

              member3=new CommonMember("王五");

              member4=new CommonMember("小芳");

              member5=new CommonMember("小红");

             

              happyChat.register(member1);

              happyChat.register(member2);

              happyChat.register(member3);

              happyChat.register(member4);

              happyChat.register(member5);

             

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

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

              member1.sendText("李四","今天天气不错,有日!");

              member2.sendImage("张三","一个很大很大的太阳");

              member2.sendImage("张三","太阳");

              member3.sendText("小芳","还有问题吗?");

              member3.sendText("小红","还有问题吗?");

              member4.sendText("王五","没有了,谢谢!");

              member5.sendText("王五","我也没有了!");

              member5.sendImage("王五","谢谢");

       }

}

public class DiamondMember extends Member

{

       public DiamondMember(String name)

       {

              super(name);

       }

      

       public void sendText(String to,String message)

       {

           System.out.println("钻石会员发送信息:");

           chatroom.sendText(name,to,message);  //发送

       }

      

       public void sendImage(String to,String image)

       {

              System.out.println("钻石会员发送图片:");

           chatroom.sendImage(name,to,image);  //发送

       }

}

public abstract class Member

{

       protected AbstractChatroom chatroom;

       protected String name;

      

       public Member(String name)

       {

              this.name=name;

       }

      

       public String getName()

       {

              return name;

       }

      

       public void setName(String name)

       {

              this.name=name;

       }

      

       public AbstractChatroom getChatroom()

       {

              return chatroom;

       }

      

    public void setChatroom(AbstractChatroom chatroom)

    {

          this.chatroom=chatroom;

    }

      

       public abstract void sendText(String to,String message);

       public abstract void sendImage(String to,String image);

 

    public void receiveText(String from,String message)

    {

          System.out.println(from + "发送文本给" + this.name + ",内容为:" + message);

    }

   

    public void receiveImage(String from,String image)

    {

          System.out.println(from + "发送图片给" + this.name + ",内容为:" + image);

    }   

}

3. 注意编程规范。

 

 

posted @ 2024-12-06 13:58  cor0000  阅读(7)  评论(0)    收藏  举报