设计模式-中介者模式在Java中使用示例-客户信息管理

这篇具有很好参考价值的文章主要介绍了设计模式-中介者模式在Java中使用示例-客户信息管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

欲开发客户信息管理窗口界面,界面组件之间存在较为复杂的交互关系:如果删除一个客户,

要在客户列表(List)中删掉对应的项,客户选择组合框(ComboBox)中客户名称也将减少一个;

如果增加一个客户信息,客户列表中需增加一个客户,且组合框中也将增加一项。

中介者模式概述

如果在一个系统中对象之间的联系呈现为网状结构。对象之间存在大量的多对多联系,将导致系统非常复杂,

这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对象,它们之间通过彼此的相互作用

实现系统的行为。在网状结构中,几乎每个对象都需要与其他对象发生相互作用,而这种相互作用表现为一个

对象与另外一个对象的直接耦合,这将导致一个过度耦合的系统。

中介者模式可以使对象之间的关系数量急剧减少,通过引入中介者对象,可以将系统的网状结构变成以中介者

为中心的星形结构。在这个星形结构中,同事对象不再直接与另一个对象联系,它通过中介者对象与

另一个对象发生相互作用。中介者对象的存在保证了对象结构上的稳定,也就是说,系统的结构不会因为

新对象的引入带来大量的修改工作。

中介者模式结构图

设计模式-中介者模式在Java中使用示例-客户信息管理,架构之路,java,设计模式,中介者模式 

在中介者模式结构图中包含如下几个角色:

Mediator(抽象中介者):

它定义一个接口,该接口用于与各同事对象之间进行通信。

ConcreteMediator(具体中介者):

它是抽象中介者的子类,通过协调各个同事对象来实现协作行为,它维持了对各个同事对象的引用。

Colleague(抽象同事类):

它定义各个同事类公有的方法,并声明了一些抽象方法来供子类实现,同时它维持了一个对抽象中介者类

的引用,其子类可以通过该引用来与中介者通信。

ConcreteColleague(具体同事类):

它是抽象同事类的子类;每一个同事对象在需要和其他同事对象通信时,先与中介者通信,

通过中介者来间接完成与其他同事类的通信;在具体同事类中实现了在抽象同事类中声明的抽象方法。

注:

博客:
霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客

实现

使用中介者模式实现客户信息管理页面。

1、新建抽象中介者

//抽象中介者
abstract class Mediator {
    public abstract void componentChanged(Component component);
}

2、然后新建具体中介者,维持对各个同事对象的引用

//具体中介者
public class ConcreteMediator extends Mediator{

    //维持对各个同事对象的引用
    public Button addButton;
    public UserList userList;
    public TextBox userNameTextBox;
    public ComboBox cb;

    @Override
    public void componentChanged(Component c) {
        //单击按钮
        if(c == addButton){
            System.out.println("单击增加按钮");
            userList.update();
            cb.update();
            userNameTextBox.update();
        }else if(c == userList){
            System.out.println("从列表框选择客户");
            cb.select();
            userNameTextBox.setText();
        }else if(c == cb){
            System.out.println("从组合框选择客户");
            cb.select();
            userNameTextBox.setText();
        }
    }
}

3、新建抽象组件类:抽象同事类

//抽象组件类:抽象同事类
abstract class Component {
    protected Mediator mediator;

    public void setMediator(Mediator mediator){
        this.mediator = mediator;
    }

    //转发调用
    public void changed(){
        mediator.componentChanged(this);
    }

    public abstract void update();
}

4、新建具体同事类:按钮类

//按钮类:具体同事类
public class Button extends Component{

    public void update() {
        System.out.println("列表增加一项");
    }

    public void select(){
        System.out.println("列表框选中项");
    }
}

5、新建具体同事类:组合框类

//组合框类:具体同事类
public class ComboBox extends Component{

    public void update() {
        System.out.println("组合框增加一项");
    }
    public void select(){
        System.out.println("组合框选中项");
    }
}

6、新建具体同事类:文本框类

//文本框类:具体同事类
public class TextBox extends Component{

    public void update() {
        System.out.println("客户信息增加成功后文本框清空");
    }

    public void setText(){
        System.out.println("文本框显示");
    }
}

7、新建具体同事类:列表框类

//列表框类:具体同事类
public class UserList extends Component{


    public void update() {
        System.out.println("列表框增加一项");
    }

    public void select(){
        System.out.println("列表框选中项");
    }
}

8、客户端调用方式如下

public class Client {
    public static void main(String[] args) {
        //定义中介者对象
        ConcreteMediator mediator;
        mediator = new ConcreteMediator();

        //定义同事对象
        Button addBT = new Button();
        UserList userList = new UserList();
        ComboBox cb = new ComboBox();
        TextBox userNameTB = new TextBox();

        addBT.setMediator(mediator);
        userList.setMediator(mediator);
        cb.setMediator(mediator);
        userNameTB.setMediator(mediator);

        mediator.addButton = addBT;
        mediator.userList = userList;
        mediator.cb = cb;
        mediator.userNameTextBox = userNameTB;

        addBT.changed();
        userList.changed();

    }
}

9、总结

中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,

使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。

中介者模式在事件驱动类软件中应用较为广泛,特别是基于GUI(Graphical User Interface,图形用户界面)

的应用软件,此外,在类与类之间存在错综复杂的关联关系的系统中,中介者模式都能得到较好的应用。

中介者模式的主要优点如下:

(1) 中介者模式简化了对象之间的交互,它用中介者和同事的一对多交互代替了原来同事之间的多对多交互,

一对多关系更容易理解、维护和扩展,将原本难以理解的网状结构转换成相对简单的星型结构。

(2) 中介者模式可将各同事对象解耦。中介者有利于各同事之间的松耦合,我们可以独立的改变和复用

每一个同事和中介者,增加新的中介者和新的同事类都比较方便,更好地符合“开闭原则”。

(3) 可以减少子类生成,中介者将原本分布于多个对象间的行为集中在一起,改变这些行为只需生成新的

中介者子类即可,这使各个同事类可被重用,无须对同事类进行扩展。

中介者模式的主要缺点如下:

在具体中介者类中包含了大量同事之间的交互细节,可能会导致具体中介者类非常复杂,使得系统难以维护。

在以下情况下可以考虑使用中介者模式:

(1) 系统中对象之间存在复杂的引用关系,系统结构混乱且难以理解。

(2) 一个对象由于引用了其他很多对象并且直接和这些对象通信,导致难以复用该对象。

(3) 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。可以通过引入中介者类来

实现,在中介者中定义对象交互的公共行为,如果需要改变行为则可以增加新的具体中介者类。文章来源地址https://www.toymoban.com/news/detail-617533.html

到了这里,关于设计模式-中介者模式在Java中使用示例-客户信息管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式——中介者模式

    中介者模式(Mediator Pattern)是一种行为型设计模式,它旨在减少多个对象之间的相互引用和耦合度。通过引入一个中介对象来封装一系列交互行为,使得原本复杂的网状关系结构转变为星形结构,所有对象与中介者通信而不是彼此直接通信。 抽象中介者(Mediator Interface):

    2024年01月18日
    浏览(37)
  • 设计模式-中介者模式

    本文将详细介绍设计模式中的中介者模式,其中包括,中介者模式的优点、缺点、各组成部分。 中介者模式(Mediator Pattern)是一种设计模式,它定义了一个中介者类,该类将多个对象之间的通信抽象化,使得这些对象可以通过中介者进行通信,从而降低它们之间的直接耦合

    2024年02月09日
    浏览(34)
  • 设计模式篇---中介者模式

    中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 就好比世界各个国家之间可能会产生冲突,但是当产生冲突的时候需要联合国来解决冲突。每个国家之间的关系,就好

    2024年01月22日
    浏览(38)
  • 设计模式之中介者模式

    详细介绍         中介者模式(Mediator Pattern)是一种行为设计模式, 它通过定义一个中介类来封装多个对象之间的交互,使各对象不需要显示地相互引用,从而降低耦合度,提高系统的可维护性和灵活性。中介者模式将原本一对多的网状关系转变为一对多的关系,即每个

    2024年04月29日
    浏览(66)
  • 设计模式(十七)中介者

    义一个对象来封装一系列的对象交互。中介者模式使各对象不需要显示地相互引用,从而使其耦合松散,而且可以让你相对独立地改变它们之间的交互。中介者模式又称为调停模式,它是一种对象说行为型模式。 在中介者模式中,引入了用于协调其他对象/类之间的相互调用

    2024年02月04日
    浏览(38)
  • 行为型设计模式——中介者模式

    中介者模式主要是将关联关系由一个中介者类统一管理维护,一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象

    2024年01月18日
    浏览(47)
  • 大话设计模式之中介者模式

    中介者模式是一种行为型设计模式,它通过引入一个中介者对象来封装一系列对象之间的交互,从而减少对象之间的直接通信,使得对象之间的耦合度降低,同时提高了系统的可维护性和灵活性。 在中介者模式中,对象之间的通信不再直接发生,而是通过中介者对象来进行。

    2024年04月16日
    浏览(42)
  • 设计模式- 中介者模式(Mediator)

    中介者模式(Mediator Pattern),是一种对象行为型模式。该模式的主要目的是定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合变得松散,并且可以独立地改变它们之间的交互。 抽象中介者(Mediator) :这是中介者模式的核心接口,它定义了同事对象注

    2024年04月26日
    浏览(36)
  • 【中介者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    中介者模式(Mediator Pattern)是一种行为型模式。它限制对象之间的直接交互,它用一个中介对象来封装一系列的动作,以让对象之间进行交流。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 当一些对象和其他对象紧密

    2023年04月19日
    浏览(36)
  • 经典的设计模式17——中介者模式

    定义: 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 结构: 抽象中介者角色:是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。 具体中介者角色:实现中

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包