设计模式- Facade门面模式和Mediator调停者模式

简介: 设计模式- Facade门面模式和Mediator调停者模式

1、 Facade门面模式定义


(1)Facade门面模式介绍


要求一 个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个 高层次的接口,使得子系统更易于使用。



(2)Facade 门面角色


客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况 下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没 有实际的业务逻辑,只是一个委托类。



(3)subsystem 子系统角色


可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类 的集合。子系统并不知道门面的存在。对于子系统而言,门面仅仅是另外一个客户 端而已。



(4)使用场景


  1. 为一个复杂的模块或子系统提供一个供外界访问的接口


  1. 子系统相对独立——外界对子系统的访问只要黑箱操作即可


  1. 预防低水平人员带来的风险扩散



(5)注意


  1. 一个子系统可以有多个门面


  1. 门面不参与子系统内的业务逻辑



2、 Mediator调停者模式


(1)Mediator调停者模式定义


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



(2)Mediator 抽象中介者角色


抽象中介者角色定义统一的接口,用于各同事角色之间的通信



(3)Concrete Mediator 具体中介者角色


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



(4)Colleague  同事角色


每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通 过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改 变对象本身的状态,处理自己的行为等,这种行为叫做自发行为(Self-Method),与其他的同事类或中介者没有任何的依赖;第二种是必须依赖中介者 才能完成的行为,叫做依赖方法(Dep-Method)。



(5)代码演示


public abstract class Mediator {
    //定义同事类
    protected ConcreteColleague1 c1;
    protected ConcreteColleague2 c2;
    //通过 getter/setter 方法把同事类注入进来
    public ConcreteColleague1 getC1() {
        return c1;
    }
    public void setC1(ConcreteColleague1 c1) {
        this.c1 = c1;
    }
    public ConcreteColleague2 getC2() {
        return c2;
    }
    public void setC2(ConcreteColleague2 c2) {
        this.c2 = c2;
    }
    //调停者模式的业务逻辑
    public abstract void doSomething1();
    public abstract void doSomething2();
}
复制代码



(6)使用场景


中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出 现了蜘蛛网状结构,即每个类都与其他的类有直接的联系。



相关文章
|
4天前
|
设计模式 API
【设计模式】适配器和桥接器模式有什么区别
【设计模式】适配器和桥接器模式有什么区别
8 1
|
4天前
|
设计模式
【设计模式】张一鸣笔记:责任链接模式怎么用?
【设计模式】张一鸣笔记:责任链接模式怎么用?
11 1
|
4天前
|
设计模式 uml
【设计模式】建造者模式就是游戏模式吗?
【设计模式】建造者模式就是游戏模式吗?
11 0
|
4天前
|
设计模式 Java uml
【设计模式】什么是工厂方法模式?
【设计模式】什么是工厂方法模式?
8 1
|
4天前
|
设计模式 uml
【设计模式】一文搞定简单工厂模式!
【设计模式】一文搞定简单工厂模式!
8 2
|
4天前
|
设计模式 JavaScript 前端开发
js设计模式-观察者模式与发布/订阅模式
观察者模式和发布/订阅模式是JavaScript中的两种设计模式,用于处理对象间的通信和事件处理。观察者模式中,一个主题对象状态改变会通知所有观察者。实现包括定义主题和观察者对象,以及在主题中添加、删除和通知观察者的功能。发布/订阅模式则引入事件管理器,允许发布者发布事件,订阅者通过订阅接收通知。
|
4天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
24 4
|
4天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
24 0
|
4天前
|
设计模式 开发者
探讨常见设计模式 - 工厂方法模式的最佳实践和潜在的实施问题
【4月更文挑战第7天】工厂方法模式是创建型设计模式,提供了一种在不指定具体类情况下创建对象的方式。它定义创建对象的接口,允许子类决定实例化哪个类,从而解耦对象的创建和使用。最佳实践包括明确接口、封装创建逻辑、提供扩展点和避免过度使用。然而,过度工程、违反开闭原则、性能影响和依赖管理是可能的问题。通过权衡利弊并遵循最佳实践,工厂方法模式能在适当场景下提升代码灵活性和可扩展性。
|
4天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式