代码详解设计模式--中介者模式
中介者模式
中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。
- 优点
- 降低了类的复杂度,将一对多转化成了一对一;
- 各个类之间的解耦;
- 符合迪米特原则。
- 缺点
- 中介者会庞大,变得复杂难以维护。
// 聊天室
public class ChatRoom {public static void showMessage(User user, String message){System.out.println("[" + user.getName() +"]:" + message);}
}@Data
@AllArgsConstructor
public class User {private String name;public void sendMessage(String message){ChatRoom.showMessage(this, message);}
}// 使用示例
public class Demo {public static void main(String[] args) {User robert = new User("Robert");User john = new User("John");robert.sendMessage("Hi! John!");john.sendMessage("Hello! Robert!");}
}
代码详解设计模式--中介者模式相关推荐
- 代码详解设计模式汇总
小博Spring Boot快速入门GitChat https://gitbook.cn/gitchat/activity/5a444c451f6ee91a25846ac1 小博代码详解设计模式 篇章 ...
- 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式
[网络配图] 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.设计 ...
- 详解设计模式:组合模式
组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...
- 详解设计模式:桥接模式
桥接模式(Bridge Pattern)也称为桥梁模式.接口模式或者柄体模式,有点像适配器模式,也是 GoF 的 23 种设计模式中的一种结构型设计模式. 桥接模式 是用于把抽象化与实现化解耦,使得二 ...
- 代码详解设计模式--模板模式
模板模式 一个抽象类公开定义了执行方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行. 优点: 封装不变部分,扩展可变部分. 提取公共代码,便于维护. 行为由父类控制,子 ...
- 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)
园子里关于23种设计模式的博文已经可以说是成千上万.车载斗量.屯街塞巷.不计其数.数不胜数.摩肩接踵.汗牛充栋.车水马龙.门庭若市.琳琅满目直至让人眼花缭乱了.在这样的大环境下之所以来写设计模式类的博 ...
- 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录
1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客前言 ...
- 详解设计模式:建造者模式
建造者模式(Builder Pattern)也叫做生成器模式,是 GoF 的 23 种设计模式的一种,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 当我们需要实列化一个 ...
- 详解设计模式之策略模式
在讲策略模式之前,我们先看一个日常生活中的小例子: 现实生活中我们到商场买东西的时候,卖场往往根据不同的客户制定不同的报价策略,比如针对新客户不打折扣,针对老客户打9折,针对VIP客户打8折... 现 ...
最新文章
- c语言队列如何表示,队列的链式表示和实现(C语言)
- SMTP身份验证(LOGIN、PLAIN、CRAM-MD5)
- Google Hangouts支持使用Firefox WebRTC
- python--list
- 第十章 內核同步的方法
- 解决url中特殊字符截断参数的问题
- 搭建一个项目的准备工作
- Ibatis.Net 数据库操作(四)
- 入手Kindle 2
- 如何在Linux里面安装Java的运行环境(详细过程)
- DE2带的IP核ISP12362报错问题解决 Error:avalon_slave_1_irq: associatedAddressablePoint out of range...
- 蓝牙Sig Mesh 概念入门①——简单介绍
- ABP 使用[DontWrapResult]注解去掉接口返回的“__abp”
- 小米米兔机器人的发展史_小米米兔机器人体验:童年的记忆汹涌而来
- 三相电压型逆变器控制simulink
- matlab匿名函数实现含参变量的对分段函数的不定积分及绘图
- android旅游app动态的,Android平台深秋出游必备APP推荐
- 强大的开源跨平台绘图软件 - diagrams
- Java中的深拷贝与浅拷贝浅析
- java工资城市排行,深度集成!
热门文章
- java中jdbc查询有返回值_使用JdbcTemplate查询方法的返回值 | 学步园
- 线性代数-MIT 18.06-5(b)
- MSCOCO检测数据集类别中文名
- 从钉钉后台对接考勤打卡信息(仅供参考)
- Unity特效基础:粒子效果面板
- 用python3制作视频字幕,生成双英文双语字幕txt和srt文件使用百度和有道翻译自封装翻译接口,可以秒杀付费工具,字幕脚本为qiweb3远程 2022年5月29日
- MyBatis中达到where a and (b or c)形式
- java深拷贝的三种方式
- 微信小程序导出zip、excel、word、png到手机
- tp对接抖音sdk_Thinkphp集成抖音SDK的实现方法