首页 > 编程语言 >Java学设计模式之中介者模式

Java学设计模式之中介者模式

时间:2024-05-10 12:11:37浏览次数:22  
标签:Java String mediator 对象 同事 中介 设计模式 name

一、中介者模式概念

1.1 什么是中介者模式

中介者模式是一种行为型设计模式,它通过将对象之间的交互行为集中到一个中介者对象中来解耦对象之间的关联。这种模式被用来减少对象之间的直接通信,从而降低了系统的耦合度,使得系统易于维护和扩展。

结构

中介者模式通常包含以下几个要素:

  1. Mediator(中介者): 定义了一个接口用于各个同事对象之间的通信。通常包含一个或多个方法用于定义不同的交互行为。

  2. ConcreteMediator(具体中介者): 实现了中介者接口,负责协调各个同事对象之间的交互行为。具体中介者通常包含对各个同事对象的引用,并且通过这些引用来进行通信。

  3. Colleague(同事): 定义了一个接口用于与其他同事对象通信的方法。同事对象通过中介者来通信,而不是直接相互引用。

  4. ConcreteColleague(具体同事): 实现了同事接口,每个具体同事对象都知道它的中介者对象,并且与其他同事对象通信时,通过中介者来进行。

二、中介者模式代码

2.1 中介者

public interface ChatRoomMediator {
    void sendMessage(String message, User user);
}

2.2 同事

public abstract class User {
    private String name;
    private ChatRoomMediator mediator;

    public User(String name, ChatRoomMediator mediator) {
        this.name = name;
        this.mediator = mediator;
    }

    String getName() {
        return name;
    }

    void sendMessage(String message) {
        mediator.sendMessage(message, this);
    }

    abstract void receiveMessage(String message);

}

2.3 具体同事

public class BasicUser extends User {
    public BasicUser(String name, ChatRoomMediator mediator) {
        super(name, mediator);
    }

    @Override
    void receiveMessage(String message) {
        System.out.println(getName() + " 收到消息: " + message);
    }
}

2.4 测试类

public class MediatorPatternTest {
    public static void main(String[] args) {
        ChatRoomMediator mediator = new ChatRoom();
        BasicUser user1 = new BasicUser("User1", mediator);
        BasicUser user2 = new BasicUser("User2", mediator);

        user1.sendMessage("Hello,User2!");
        user2.sendMessage("Hi,User1!");

        // 输出:
        // User1 发送消息: Hello,User2!
        // User2 发送消息: Hi,User1!
    }
}

三、总结

中介者模式的优点包括:

  • 减少了对象之间的直接耦合,使得系统易于维护和扩展。
  • 可以集中控制对象之间的交互行为,使得交互逻辑更加清晰。

缺点包括:

  • 中介者对象可能会变得比较复杂,特别是当系统中有大量同事对象时。
  • 中介者模式可能会导致中介者对象过于集中化,使得系统的结构变得复杂。

标签:Java,String,mediator,对象,同事,中介,设计模式,name
From: https://www.cnblogs.com/Linzj5950/p/18184044

相关文章

  • Java 判断是否为工作时间
    /***判断是否为工作时间(上午:7:30-11:30下午:13:30-17:20)*@return*/publicstaticbooleanisWithinWorkingHours(){LocalTimecurrentTime=LocalTime.now();//LocalTimecurrentTime=LocalTime.parse("17:19:59");......
  • 操作系统线程和Java线程的状态
    操作系统线程和Java线程的状态  一、操作系统线程的状态  操作系统的线程主要有以下三个状态  1. 就绪状态(ready):线程正在等待使用CPU,经调度程序调用之后进入running状态。  2.执行状态(running):线程正在使用CPU。  3.等待状态(waiting):线程经过等......
  • 【java】ArrayList和LinkedList的区别
    一、ArrayList和LinkedList的相同点ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用,他们都可以对元素的增删改查进行操作。ArrayList、LinkedList、Vector和Stack是List的四个实现类,List是一个接口,它继承与Collection接口,代表有序的队列。其中Vector......
  • Java学设计模式之享元模式
    一、享元模式概念1.1什么是享元模式享元模式是一种结构型设计模式,旨在通过共享对象来最大程度地减少内存使用和提高性能。在享元模式中,对象被设计成可共享的,以便在需要时能够被多个不同的上下文使用。结构享元模式通常包含以下几个要素:Flyweight(享元):定义了共享对象的接口......
  • JDK源码阅读-------自学笔记(二十六)(java.util.Map 自定义讲解)
    一、简介Map就是用来存储“键(key)-值(value)”对的.通过键寻找value,所以键不能重复.数组的本质也是一种键值对,区别就是索引一般是数字,而Map的Key可以是任意对象(字符串,数字),相当于把数组的索引范围扩的更大,使用更方便.实际开发中较为常用.二、Map的常用方法实例(1......
  • 设计模式之七大原则
    设计模式之七大原则(一)——单一职责原则、开放-关闭原则_系统设计原则单一职责隔离-CSDN博客一、设计模式的目的设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性,使得程序呈现出高内聚、低耦合的特性。二、设计模式的七大原则我们在设计一些设计模式时,一般遵循......
  • 设计模式详解
    本文结构图:除了类本身,设计模式更强调多个类/对象之间的关系和交互过程——比接口/类复用的粒度更大创建型模式(Creationalpatterns)工厂方法模式(FactoryMethodpattern)工厂方法也被称作虚拟构造器(VirtualConstructor)即定义一个用于创建对象的接口,让子类类决定实例化......
  • 设计模式03----构造者模式
    构造者模式:是一种创建型设计模式,是将一个对象拆分成多个部件分别进行构造然后组合成为一个整体的设计模式产品(Product):被构建的复杂对象,通常包含多个组成部件,例如一个需要配置的汽车对象。抽象建造者(Builder):一个接口,定义了构建产品各个部件的方法。具体建造者(ConcreteBuilde......
  • JAVA_WEB复习之请求响应
    简单参数请求:原始的方法,我们需要通过servlet中提供的api,HttpServletRequest(请求对象),获取请求的相关信息。比如获取请求参数:当tomcat接收到请求时,它会把请求的信息封装httpservletrequest到对象中。而在Springboot的环境,原始的API进行了封装,接收参数的形式更加简单。如果是简单......
  • Springboot项目的jar包的运行方式以及使用yum安装java后忘记了位置
    SpringBoot项目打包后的jar的部署方式这里我写了五种部署方式1.直接启动java-jarxxx.jar这种方式就只适合自己在测试时用一下,关闭会话就能停止运行属实是方便。2.后台启动java-jarxxx.jar&在后台静默启动,同样关闭会话也会停止,优点是和上面一样,日志是打印在窗口的3......