java模块之间的调用_java 设计模式 中介者模式 让互相调用的模块之间解耦合

java 设计模式 中介者模式 让互相调用的模块之间解耦合

java 设计模式 中介者模式 让互相调用的模块之间解耦合

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

dab6b0bd21c1e322478667841b838bd0.png

中介者模式的角色和职责

1、Mediator:中介者类的抽象父类

抽象中介者角色定义统一的接口,用于各角色(男和女)之间的通信。

2、ConcreteMediator:具体中介者角色

具体中介者角色,通过协调各角色(男和女)实现协作行为,因此它必须依赖于各个角色。

3、Colleague:关联类的抽象父类

每一个角色都知道中介者角色,而且与其它的角色通信的时候,一定要通过中介者角色来协作。

每个类(Person)的行为分为二种(男和女):一种是男女本身的行为,这种行为叫做自发行为(Self-Method);第二种是必须依赖中介者才能完成的行为,叫做依赖行为(Dep-Method)。

4、concreteColleague:具体的关联类(Man和Woman)。

package com.designpattern;

public class MediatorPatternDemo {

public static void main(String[] args) {

Mediator Mediator = new Mediator();

ModuleA moduleA = new ModuleA(Mediator);

ModuleB ModuleB = new ModuleB(Mediator);

ModuleC ModuleC = new ModuleC(Mediator);

moduleA.execute();

ModuleB.execute();

ModuleC.execute();

}

public static class Mediator {

private ModuleA moduleA;

private ModuleB ModuleB;

private ModuleC ModuleC;

public ModuleA getModuleA() {

return moduleA;

}

public void setModuleA(ModuleA moduleA) {

this.moduleA = moduleA;

}

public MediatorPatternDemo.ModuleB getModuleB() {

return ModuleB;

}

public void setModuleB(MediatorPatternDemo.ModuleB moduleB) {

ModuleB = moduleB;

}

public MediatorPatternDemo.ModuleC getModuleC() {

return ModuleC;

}

public void setModuleC(MediatorPatternDemo.ModuleC moduleC) {

ModuleC = moduleC;

}

public void moduleAInvoke() {

ModuleB.execute("模块A通知中介者");

ModuleC.execute("模块A通知中介者");

}

public void moduleBInvoke() {

moduleA.execute("模块B通知中介者");

ModuleC.execute("模块B通知中介者");

}

public void moduleCInvoke() {

moduleA.execute("模块C通知中介者");

ModuleB.execute("模块C通知中介者");

}

}

public static class ModuleA {

private Mediator mediator;

public ModuleA(Mediator mediator) {

this.mediator = mediator;

this.mediator.setModuleA(this);

}

public void execute() {

mediator.moduleAInvoke();

}

public void execute(String str) {

System.out.println(str + "在调用模块A的功能");

}

}

public static class ModuleB {

private Mediator mediator;

public ModuleB(Mediator mediator) {

this.mediator = mediator;

this.mediator.setModuleB(this);

}

public void execute() {

mediator.moduleBInvoke();

}

public void execute(String str) {

System.out.println(str + "在调用模块B的功能");

}

}

public static class ModuleC {

private Mediator mediator;

public ModuleC(Mediator mediator) {

this.mediator = mediator;

this.mediator.setModuleC(this);

}

public void execute() {

mediator.moduleCInvoke();

}

public void execute(String str) {

System.out.println(str + "在调用模块c的功能");

}

}

}

java 设计模式 中介者模式 让互相调用的模块之间解耦合相关教程

Java API练习2

Java API练习2 要求一: 完成一个java application应用程序,通过接收用户通过键盘输入的文本,把每次回车输入的字符串动态加入到Vector类对象中,并显示此Vector类对象中存储的字符串。 要求二: 完成一个 java application应用程序,计算执行十亿次空循环所

java 设计模式 原型模式 自己实现自己的拷贝逻辑

java 设计模式 原型模式 自己实现自己的拷贝逻辑 原型模式,在笔者理解看来就是克隆,当我们在创建第一个对象时,已经给对象赋值完毕,此时我们需要一个当前对象的副本,如果没有原型模式,我们会再次创建一个对象,然后后二次赋值,保证两个对象完全一致,

(Java学习随堂笔记)对象序列化、随机文件读写

(Java学习随堂笔记)对象序列化、随机文件读写 对象序列化 实现对象的读写: ObjectInputStream把对象读入程序 ObjectOutputStream把对象写入磁盘文件 不保存对象的transient和static类型的变量 ObjectOutputStream s = new ObjectOutputStream(new FileOutp

Java有向无权图的单源点最短路径-邻接矩阵和邻接表

Java有向无权图的单源点最短路径-邻接矩阵和邻接表 此文章是随手笔记,写的不好见谅。 无权图的单源点最短路径我这用BFS实现 主要的就是图的实现与BFS的搜索,其它没什么 为了下一步的有向有权图单源点最短路径做基础 1.用邻接矩阵表示图的 import java.util.

在VScode中创建Java项目

在VScode中创建Java项目 在VScode中创建Java项目 1. 配置SDK环境 2.在vscode中下载Java插件 之前使用过idea或者其他IDE编写Java已经下载并配置好了sdk,可以直接跳转到第二步。没有配置过sdk环境的需要先配置sdk。 1. 配置SDK环境 在win10环境下: 下载jdk:

java基础(集合)

java基础(集合) 集合 1.结构 Collection List:集合中元素可重复 ArrayList:顺序存储 Vector:顺序存储 LinkedList:链式存储 Set:集合中元素不可重复 HashSet TreeSet Map HashMap Hashtable Properties 2.常用方法 1.ArrayList和Vector的常用方法 add(Objec

Java用Dijkstra计算有权图单源点最短路径

Java用Dijkstra计算有权图单源点最短路径 随手笔记,做的不好见谅。 DijKstra算法个人理解 每次取出最短路径的顶点 由该点进行扩散,遍历该点的邻接点得到新点 若源点到该点+该点到新点源点到新点,就更新源点到新点的值 添加进该新点进队列下次由它扩散,如

03. 【Java】流程控制

03. 【Java】流程控制 一、Java程序结构 顺序结构、选择结构、循环结构是结构化程序设计的3种基本结构,是各种复杂程序的基本构造单元: 上图中的三种结构分别是顺序结构、选择结构、循环结构。循环结构是指编写完毕的语句按照编写顺序依次被执行;选择结构是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值