设计模式学习(十):门面模式

设计模式,学习,门面,模式 · 浏览次数 : 169

小编点评

**门面模式学习(十)** **门面模式**是一种结构型模式,它将子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 **门面模式的优点:** * 减少代码重复性。 * 提高可维护性。 * 增强可移植性。 **门面模式的示例:** ```java // 门面接口 interface LabourConstractor { void buildHouse(); } // 子类实现门面接口 class Mason implements LabourConstractor { public void buildHouse() { // 和泥了 } } class BrickWorker implements LabourConstractor { public void buildHouse() { // 搬砖 } } class BrickLayer implements LabourConstractor { public void buildHouse() { // 砌墙 } } ``` **门面模式的应用:** * 建造房子 * 管理数据库 * 处理网络请求 * 管理系统资源 **门面模式的优点:** * 减少代码重复性,提高可维护性。 * 提供统一的接口,简化子类之间的交互。 * 增强可移植性,使代码更容易在不同的平台上运行。 **门面模式的缺点:** * 可能会增加一些额外成本,例如创建门面对象。 * 限制子类可以采取的特定行为。 **总结:** 门面模式是一种设计模式,可以用于将子系统提供一组统一的接口。门面模式可以减少代码重复性,提高可维护性,并增强可移植性。

正文

设计模式学习(十):门面模式

作者:Grey

原文地址:

博客园:设计模式学习(十):门面模式

CSDN:设计模式学习(十):门面模式

门面模式

门面模式是一种结构型模式。

门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。

假设建造一个房子需要有如下三个步骤:

第一步,和泥

第二步,搬砖

第三步,砌墙

如果每次我们制造一个房子都要分别调用这三个方法,就会比较麻烦一些,我们可以设置一个门面,这个门面封装了这三个步骤,后续建造房子,只需要调用这个门面即可。

和泥

public class Mason {
    public void mix() {
        System.out.println("我和好泥了!");
    }
}

搬砖

public class BrickWorker {
    public void carry() {
        System.out.println("我搬好砖了!");
    }
}

砌墙

public class BrickLayer {
    public void neat() {
        System.out.println("我砌好墙了!");
    }
}

门面

public class LabourConstractor {
    private Mason work1 = new Mason();
    private BrickWorker work2 = new BrickWorker();
    private BrickLayer work3 = new BrickLayer();

    public void buildHouse() {
        work1.mix();
        work2.carry();
        work3.neat();
    }
}

这样主函数只需要调用门面的 buildHourse() 方法,就可以建造一个房子了

public class Client {
    public static void main(String[] args) {
        LabourConstractor labour = new LabourConstractor();
        labour.buildHouse();
    }
}

门面模式的 UML 图如下

image

门面模式应用

  • Linux 的系统调用和 Shell 脚本

Linux 系统调用函数就可以看作一种“门面”。它是 Linux 操作系统暴露给开发者的一组“特殊”的编程接口,它封装了底层更基础的 Linux 内核调用。再比如, Linux 的 Shell 命令,实际上也可以看作一种门面模式的应用。它继续封装系统调用,提供更加友好、简单的命令,让我们可以直接通过执行命令来跟操作系统交互。

  • Spring JDBC 中的 JdbcUtils类,包装了 JDBC 相关的所有操作。

  • Tomcat 中的 RequestFacade, ResponseFacade, StandardSessionFacade

UML 和 代码

UML 图

代码

更多

设计模式学习专栏

参考资料

与设计模式学习(十):门面模式相似的内容:

设计模式学习(十):门面模式

设计模式学习(十):门面模式 作者:Grey 原文地址: 博客园:设计模式学习(十):门面模式 CSDN:设计模式学习(十):门面模式 门面模式 门面模式是一种结构型模式。 门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 假设建造一个房子需要有如下三个步骤: 第一步,和泥 第二

认识 CPU 底层原理(2)——逻辑门

本文为B站UP主硬件茶谈制作的系列科普《【硬件科普】带你认识CPU》系列的学习笔记,仅作个人学习记录使用,如有侵权,请联系博主删除 上一篇文章我们从最基本的粒子的角度认识了组成CPU的最基本单元MOSFET的原理。CPU作为计算机的核心硬件,其最主要的功能是进行运算,本章我们将会介绍CPU设计者是如

[转帖]TiDB 数据库核心原理与架构 [TiDB v6](101)笔记

https://www.jianshu.com/p/01e49a93f671 description: "本课程专为将在工作中使用 TiDB 数据库的开发人员、DBA 和架构师设计。 本门课侧重于 TiDB 数据库的架构和设计原则,这是未来管理、开发、性能调整和故障排除的基础。在学习本课程前,您需要

设计模式学习(二)工厂模式——工厂方法模式+注册表

目录工厂方法模式的瑕疵注册表 工厂方法模式的瑕疵 在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下: 考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过程中,就需要加以判断。 例如,在我的例子中,要根据连接到主机的

设计模式学习(二):单例模式

设计模式学习(二):单例模式 作者:Grey 原文地址: 博客园:设计模式学习(二):单例模式 CSDN:设计模式学习(二):单例模式 单例模式 单例模式是创建型模式。 单例的定义:“一个类只允许创建唯一一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。”定

设计模式学习(三):工厂模式

设计模式学习(三):工厂模式 作者:Grey 原文地址: 博客园:设计模式学习(三):工厂模式 CSDN:设计模式学习(三):工厂模式 工厂模式 工厂模式是创建型模式,工厂模式分为:简单工厂,工厂方法和抽象工厂三种类型。 简单工厂 这个模式很简单,比如我们需要制造不同类型的鼠标,我们只需要创建一个鼠

设计模式学习(四):建造者模式

设计模式学习(四):建造者模式 作者:Grey 原文地址: 博客园:设计模式学习(四):建造者模式 CSDN:设计模式学习(四):建造者模式 建造者模式 建造者模式是创建型模式。 我们在对一个实体类进行属性的 get 或 set 的时候,可以通过封装一些常用的构造方法来简化实体类的构造。 比如 Ef

设计模式学习(五):原型模式

设计模式学习(五):原型模式 作者:Grey 原文地址: 博客园:设计模式学习(五):原型模式 CSDN:设计模式学习(五):原型模式 原型模式 原型模式是创建型模式。 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段的值都相同),在这种情况下,我们可以利用对已有对象(原型)进

设计模式学习(六):代理模式

设计模式学习(六):代理模式 作者:Grey 原文地址: 博客园:设计模式学习(六):代理模式 CSDN:设计模式学习(六):代理模式 代理模式 代理模式是结构型模式,分为静态代理和动态代理。 静态代理 举个例子,假设需要在某个类的某段代码的前后加上日志记录,就可以通过静态代理的方式实现,代码如下

设计模式学习(七):适配器模式

设计模式学习(七):适配器模式 作者:Grey 原文地址: 博客园:设计模式学习(七):适配器模式 CSDN:设计模式学习(七):适配器模式 适配器模式 适配器模式是一种结构型模式。 举例说明,假设有一个播放器,需要根据不同格式以及对应的文件来播放,接口设计如下: public interface