门面模式 与 装饰器模式(1)

简介: 门面模式 与 装饰器模式(1)

一、门面模式定义


  • 定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口
  • 外观模式定义了一个高层接口,让子系统更容易使用
  • 类型:结构型
  • UML类图


image.png


门面模式是对系统复杂的关系处理做了一个封装,对外提供一个简单的接口,成员介绍:

子系统:被门面模式封装的子系统,也是具体业务逻辑的细节

facade类:门面类,对子系统执行流程进行封装,对外开放功能接口,一般为单例对象。

二、门面模式实例

门面模式主要包含2种角色:


**外观角色(Facade):**也称门面角色,系统对外的统一接口;


**子系统角色(SubSystem):**可以同时有一个或多个 SubSystem。每个 SubSytem 都不是一个单独

的类,而是一个类的集合。 SubSystem 并不知道 Facade 的存在,对于 SubSystem 而言, Facade 只

是另一个客户端而已(即 Facade 对 SubSystem 透明)。


下面是门面模式的通用代码,首先分别创建3个子系统的业务逻辑SubSystemA、SubSystemB、

SubSystemC,代码很简单:


image.png


来看客户端代码:


// 外观角色 Facade
public class Facade {
    private SubSystemA a = new SubSystemA();
    private SubSystemB b = new SubSystemB();
    private SubSystemC c = new SubSystemC();
    // 对外接口
    public void doA() {
        this.a.doA();
    }
    // 对外接口
    public void doB() {
        this.b.doB();
    }
    // 对外接口
    public void doC() {
        this.c.doC();
    }
}


三、门面模式的优缺点

优点:

1、简化了调用过程,无需深入了解子系统,以防给子系统带来风险

2、减少系统依赖、松散耦合

3、更好地划分访问层次,提高了安全性

4、遵循迪米特法则,即最少知道原则。


缺点:

1、当增加子系统和扩展子系统行为时,可能容易带来位置风险

2、不符合开闭原则

3、某些情况下可能违背的单一职责原则


四、门面模式在实际中的应用

例如:前端ReseFul请求——>Controll ->Dao->Service


五、装饰器模式介绍

装饰器模式在我们生活中应用也比较多如给煎饼加鸡蛋;给蛋糕加上一些水果;给房子装修等,为对象扩展一些额外的职责。装饰器在代码程序中适用于以下场景:


1、用于扩展一个类的功能或给一个类添加附加职责。


2、动态的给一个对象添加功能,这些功能可以再动态的撤销。


3、需要为一批的兄弟类进行改装或加装功能。


目录
相关文章
|
7月前
结构型 装饰器模式
结构型 装饰器模式
33 0
|
6月前
|
设计模式 Java
Java设计模式:外观模式之优雅门面(九)
Java设计模式:外观模式之优雅门面(九)
|
7月前
|
设计模式
装饰器模式
装饰器模式
36 0
|
7月前
|
设计模式 C++
【C++】—— 装饰器模式
【C++】—— 装饰器模式
|
7月前
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
52 0
|
7月前
|
前端开发
结构型 外观模式
结构型 外观模式
30 0
|
设计模式
2023-6-26-第八式装饰器模式
2023-6-26-第八式装饰器模式
77 0
|
前端开发 BI
关于装饰器模式我所知道的
关于装饰器模式我所知道的
79 0
|
设计模式
我认为的装饰器模式
我认为的装饰器模式
100 0
|
应用服务中间件 智能硬件 容器
结构型模式-外观模式
结构型模式-外观模式
86 0