java中介者模式
2023-09-14 09:07:45 时间
中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。先看看图:
User类统一接口,User1和User2分别是不同的对象,二者之间有关联,如果不采用中介者模式,则需要二者相互持有引用,这样二者的耦合度很高,为了解耦,引入了Mediator类,提供统一接口,MyMediator为其实现类,里面持有User1和User2的实例,用来实现对User1和User2的控制。这样User1和User2两个对象相互独立,他们只需要保持好和Mediator之间的关系就行,剩下的全由MyMediator类来维护!基本实现:
[java] view plaincopy
- public interface Mediator {
- public void createMediator();
- public void workAll();
- }
[java] view plaincopy
- public class MyMediator implements Mediator {
- private User user1;
- private User user2;
- public User getUser1() {
- return user1;
- }
- public User getUser2() {
- return user2;
- }
- @Override
- public void createMediator() {
- user1 = new User1(this);
- user2 = new User2(this);
- }
- @Override
- public void workAll() {
- user1.work();
- user2.work();
- }
- }
[java] view plaincopy
- public abstract class User {
- private Mediator mediator;
- public Mediator getMediator(){
- return mediator;
- }
- public User(Mediator mediator) {
- this.mediator = mediator;
- }
- public abstract void work();
- }
[java] view plaincopy
- public class User1 extends User {
- public User1(Mediator mediator){
- super(mediator);
- }
- @Override
- public void work() {
- System.out.println("user1 exe!");
- }
- }
[java] view plaincopy
- public class User2 extends User {
- public User2(Mediator mediator){
- super(mediator);
- }
- @Override
- public void work() {
- System.out.println("user2 exe!");
- }
- }
测试类:
[java] view plaincopy
- public class Test {
- public static void main(String[] args) {
- Mediator mediator = new MyMediator();
- mediator.createMediator();
- mediator.workAll();
- }
- }
输出:
user1 exe!
user2 exe!
相关文章
- 四大国内外开源的java工作流程引擎,流程快速开发平台对比分析选型[通俗易懂]
- java集合类面试题_Java集合类相关面试题
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- Java.Utils:获取电脑配置信息
- java后台怎么解密md5,Java md5 密码加解密
- Java Random nextInt()方法与示例[通俗易懂]
- java 自定义的类加载器_Java如何自定义类加载器[通俗易懂]
- Java list foreach_java的foreach
- Java设计模式之中介者模式
- Java线程池工具类Executors
- java设计模式之单例模式详解编程语言
- java.awt.headless 模式详解编程语言
- Java异步MySQL:开启数据处理新时代(java异步mysql)
- Linux下Java开发入门指南(linux下java开发)
- 使用Java在Linux系统上开发:一步步安装全部组件(java环境linux)
- Java二维数组详解:二维数组的声明和初始化,以及获取二维数组的值
- 方式Redis Java控制过期时间的方式(redisjava过期)
- 实现Redis中Java键值对的过期管理(redisjava过期)
- 时间解决Redis中Java设置过期时间的方法(redisjava过期)
- 时间解决Java操作Redis设置过期时间(redisjava过期)
- Redis与Java订阅机制实战(redisjava订阅)
- Java如何在Linux下运行?(java执行linux)
- Java与Oracle同步一种新的数据库模式(java同步oracle)
- Java之String、StringBuffer、StringBuilder的区别分析
- java读取文件显示进度条的实现方法
- android开发中使用java观察者模式
- java中request常用方法小结