首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,082 阅读
2
类的加载
741 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
584 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
388
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
页面
统计
关于
搜索到
1
篇与
的结果
2022-09-19
行为型模式-中介者模式
(1)概述中介者模式又称调停模式,定义一个中介者角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立的改变它们之间的交互(2)结构抽象中介者:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法具体中介者:实现中介者接口,定义一个 List 来管理同事对象,协调各个同事对象之间的交互关系,须依赖于同事对象抽象同事类:定义同事类的接口,保存中介者对象,提供同事对象交互的抽象方法,实现所有相互影响的同事类的公共功能具体同事类:实现抽象同事类接口,当需要与其他同事对象交互时,由中介者对象负责后续的交互(3)案例以租房为例抽象中介者public abstract class Mediator { /** * 交流 * * @param message 信息 * @param person 抽象同事类 */ public abstract void contact(String message, Person person); }具体中介者public class MediatorStructure extends Mediator { //聚合房东、租房者 private HouseOwner houseOwner; private Tenant tenant; public HouseOwner getHouseOwner() { return houseOwner; } public void setHouseOwner(HouseOwner houseOwner) { this.houseOwner = houseOwner; } public Tenant getTenant() { return tenant; } public void setTenant(Tenant tenant) { this.tenant = tenant; } @Override public void contact(String message, Person person) { if (person == houseOwner) { tenant.getMessage(message); } else { houseOwner.getMessage(message); } } }抽象同事类public abstract class Person { protected String name; protected Mediator mediator; public Person(String name, Mediator mediator) { this.name = name; this.mediator = mediator; } }具体同事类public class HouseOwner extends Person { public HouseOwner(String name, Mediator mediator) { super(name, mediator); } /** * 与中介沟通 * * @param message 信息 */ public void contact(String message) { mediator.contact(message, this); } /** * 获取信息 * * @param message 信息 */ public void getMessage(String message) { System.out.println("房东获取到的信息:" + message); } } public class Tenant extends Person { public Tenant(String name, Mediator mediator) { super(name, mediator); } /** * 与中介沟通 * * @param message 信息 */ public void contact(String message) { mediator.contact(message, this); } /** * 获取信息 * * @param message 信息 */ public void getMessage(String message) { System.out.println("租房者获取到的信息:" + message); } }Clientpublic class Client { public static void main(String[] args) { //创建中介者 MediatorStructure mediatorStructure = new MediatorStructure(); //租房者 Tenant tenant = new Tenant("孙笑川", mediatorStructure); //房东 HouseOwner houseOwner = new HouseOwner("刘波", mediatorStructure); //中介需知道具体的租房者和房东 mediatorStructure.setTenant(tenant); mediatorStructure.setHouseOwner(houseOwner); tenant.contact("我要租房"); houseOwner.contact("我这里有"); } }(4)优缺点松散耦合:通过把多个同事对象之间的交互封装到中介者对象里面,从而使得同事对象之间松散耦合,可以做到互补依赖,同事对象也可以独立的变化和复用集中控制交互:多个同事对象的交互,被封装在中介者对象中集中管理,在交互发生变化的时候,只需修改中介者(或者进行扩展)一对多的关联转变为一对一:引入中介者之后,中介者与同事对象的关系变为双向一对一,使同事对象的关系易于理解和实现当同事类较多时,中介者的职责很重,结构复杂且难以维护(5)使用场景系统中对象间存在复杂的引用关系,系统结构混乱且难以理解需创建一个运行于多个类之间的对象,又不想生成新的子类时
2022年09月19日
146 阅读
0 评论
0 点赞