门面模式 与 装饰器模式(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、需要为一批的兄弟类进行改装或加装功能。


目录
相关文章
|
3月前
结构型 装饰器模式
结构型 装饰器模式
26 0
|
2月前
|
设计模式 算法 关系型数据库
设计模式第七讲-外观模式、适配器模式、模板方法模式详解
系统要求所有的数据库帮助类必须实现ISqlHelp接口,面向该接口编程,如SQLServerHelp类。 此时第三方提供了一个新的MySql的帮助类(假设是dll,不能修改),它的编程规范和ISqlHelp不兼容,这个时候就需要引入适配器类,使二者能相互兼容。
158 0
|
3月前
|
设计模式
装饰器模式
装饰器模式
21 0
|
3月前
|
设计模式 C++
【C++】—— 装饰器模式
【C++】—— 装饰器模式
|
3月前
|
前端开发
结构型 外观模式
结构型 外观模式
23 0
|
设计模式
2023-6-26-第八式装饰器模式
2023-6-26-第八式装饰器模式
68 0
|
前端开发 BI
关于装饰器模式我所知道的
关于装饰器模式我所知道的
62 0
|
设计模式
我认为的装饰器模式
我认为的装饰器模式
87 0
|
应用服务中间件 智能硬件 容器
结构型模式-外观模式
结构型模式-外观模式
69 0
|
设计模式
我学会了,装饰器模式
装饰器模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
97 0
我学会了,装饰器模式