23种设计模式-关系模式-中介者模式(二十二)

简介: 23种设计模式-关系模式-中介者模式(二十二)

正文


中介者模式(Mediator)


中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和 Mediator 类的关系,具体类类之间的关系及调度交给 Mediator 就行,这有点像 spring 容器的作用。先看看图:


30.jpg


User 类统一接口,User1 User2 分别是不同的对象,二者之间有关联,如果不采用中介者模式,则需要二者相互持有引用,这样二者的耦合度很高,为了解耦,引入了 Mediator 类, 提供统一接口,MyMediator 为其实现类,里面持有 User1 User2 的实例,用来实现对 User1User2 的控制。这样 User1 User2 两个对象相互独立,他们只需要保持好和 Mediator 之 间的关系就行,剩下的全由 MyMediator 类来维护!基本实现:


public interface Mediator {
    public void createMediator();
    public void workAll();
}


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();
    }
}


public abstract class User {
    private Mediator mediator;
    public Mediator getMediator() {
        return mediator;
    }
    public User(Mediator mediator) {
        this.mediator = mediator;
    }
    public abstract void work();
}
public class User1 extends User {
    public User1(Mediator mediator){
        super(mediator);
    }
    @Override
    public void work() {
        System.out.println("user1 exe!");
    }
}


public class User2 extends User {
    public User2(Mediator mediator){
        super(mediator);
    }
    @Override
    public void work() {
        System.out.println("user2 exe!");
    }
}


测试类:


public class Test {
    public static void main(String[] args) {
        Mediator mediator = new MyMediator();
        mediator.createMediator();
        mediator.workAll();
    }
}


输出:
user1 exe! user2 exe!


相关文章
|
19天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0
|
1月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
3月前
|
设计模式 存储 算法
Java 设计模式最佳实践:三、行为模式
Java 设计模式最佳实践:三、行为模式
22 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
15天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
3天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
3天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
4天前
|
设计模式 调度
【设计模式系列笔记】中介者模式
中介者模式(Mediator Pattern)是一种行为设计模式,它通过将对象之间的直接通信转移到一个中介对象中,来减少对象之间的耦合度。这种模式被用来处理一个对象与其他对象之间的交互,使得各对象之间不需要直接相互了解。
13 0
|
5天前
|
设计模式
设计模式(一)简单工厂模式
设计模式(一)简单工厂模式
13 0
|
15天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式