设计模式-外观模式

这篇具有很好参考价值的文章主要介绍了设计模式-外观模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

外观模式:

     外观模式(Facade Pattern)是属于结构型的设计模式,它的主要目的是为子系统中的一组接口提供一个统一且更简单的接口,还简化了客户端调用子系统功能的过程。

角色和结构:

1 Facade(外观类)

  • Facade 类提供了对子系统的简洁、一致的接口。它包含了子系统中的多个模块或组件的方法,并在内部协调这些方法的调用。
  • 客户端通常只与 Facade 类交互,而不是直接与子系统内的各个类交互。

2 Subsystem Classes(子系统类)

  • 子系统包含了一系列相关的类,它们共同实现了一组功能。这些类可能有复杂的依赖关系,或者客户端直接调用会比较复杂。
  • 子系统类不直接与 Facade 类通信,而是由 Facade 在需要时调用它们。

工作原理:

  • Facade 为子系统定义了接口,它封装了子系统中的复杂性,对外提供简单易用的功能。
  • 当客户端通过 Facade 调用某个功能时,Facade 负责处理请求,包括协调子系统中的多个对象执行操作,转换和传递数据等。

示例代码:

外观模式示例代码如下:

// 子系统类
class SubsystemA {
    public void operationA() {
        // 实现子系统A的操作...
    }
}

class SubsystemB {
    public void operationB() {
        // 实现子系统B的操作...
    }
}

class SubsystemC {
    public void operationC() {
        // 实现子系统C的操作...
    }
}

// 外观类
class Facade {
    private SubsystemA a;
    private SubsystemB b;
    private SubsystemC c;

    public Facade() {
        this.a = new SubsystemA();
        this.b = new SubsystemB();
        this.c = new SubsystemC();
    }

    public void performComplexOperation() {
        // 协调并执行子系统的方法
        a.operationA();
        b.operationB();
        c.operationC();
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Facade facade = new Facade();

        // 客户端只需要调用 Facade 提供的简单方法即可完成复杂的任务
        facade.performComplexOperation();
    }
}

说明:在上面代码中SubsystemASubsystemB 和 SubsystemC 是子系统中的类,而 Facade 类负责整合它们的功能并通过 performComplexOperation() 方法提供给客户端简单直观的调用方式。

外观模式的优点:

  • 降低复杂性:隐藏了子系统的复杂性,使客户端不用了解子系统的实现细节。
  • 减少耦合:客户端只需与 Facade 类进行交互,减少了客户端与子系统间的耦合度。
  • 提高灵活性:修改子系统内部实现时,只要 Facade 的接口保持不变,就不会影响到使用 Facade 的客户端代码。

外观模式的应用场景:

  • 对于复杂功能的简化访问,例如复杂的操作系统的api或者第三方API等。
  • 当需要向原有系统扩展时,只增加新接口以适应新的需求时。

 文章来源地址https://www.toymoban.com/news/detail-805090.html

到了这里,关于设计模式-外观模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式之外观模式

    组建一个家庭影院: DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器: 统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开 DVD,选 dvd 去拿爆米花 调暗灯光 播放 观影结束后,关闭各种设备 在 ClientTest

    2024年02月09日
    浏览(39)
  • 设计模式(8)外观模式

    一、 1、使用背景:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。 2、定义: 为子系统中的一组接口定义一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。完美地体现了依赖倒转原则和迪米特法则的思想。 3、结构

    2024年02月11日
    浏览(36)
  • Java设计模式-外观模式

    在软件开发过程中,经常会遇到复杂的系统和庞大的类库。这些系统往往包含了大量的类和子系统,给开发人员带来了挑战。为了简化接口设计和提高系统的可用性,设计模式提供了一种名为外观模式的解决方案。 外观模式是一种结构型设计模式,旨在为复杂系统提供一个简

    2024年02月05日
    浏览(50)
  • 设计模式之外观模式笔记

    记录下学习设计模式-外观模式的写法。JDK使用版本为1.8版本。 意图 :为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 结构 : 其中: Facade知道哪些子系统类负责处理请求;将客户的请求代理给适合的子系统

    2024年02月11日
    浏览(36)
  • js设计模式:外观模式

    将复杂的功能封装成可以简单调用的方法,无需知道内部的具体逻辑,只需要知道怎么去使用 类似于一把枪,你可以不知道内部的枪机,击发机,复进簧,枪管,导气装置,弹夹是怎么合作配合完成发射和自动填弹,你只需要知道你扣动扳机就能完成这一系列复杂的操作,而那个扳机就是

    2024年02月22日
    浏览(39)
  • 设计模式之代理模式与外观模式

    目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介 优点:  

    2024年02月10日
    浏览(36)
  • C#设计模式之---外观模式

    外观模式(Facade Pattern)提供了一个简单且公用的接口去处理复杂的子系统,并且没有减少子系统的功能。降低子系统的复杂性,避免了客户与子系统直接链接,它也减少了子系统与子系统间的连接,每个子系统都有它的Facade模式,每个子系统采用Facade模式去访问其他子系统

    2024年02月16日
    浏览(55)
  • 【23种设计模式】外观模式(十)

    外观模式 ,英文名称是: Facade Pattern 。我们先从名字上来理解一下“外观模式”。我看到了“外观”这个词语,就想到了“外表”这个词语,两者有着很相近的意思。就拿谈恋爱来说,“外表”很重要,如果第一眼看着很舒服、有眼缘,那就有交往下去的可能。如果长的“

    2024年02月08日
    浏览(45)
  • JavaScript 设计模式之外观模式

    我们为啥要使用外观模式呢,其实我们在使用各种 js 库的时候常常会看到很多的外观者模式,也正是这些库的大量使用,所以使得兼容性更广泛,通过外观者模式来封装多个功能,简化底层操作方法 在我们写方法时,通常会传递参数的形式来传递数据 但是我们更应该这样来

    2024年02月20日
    浏览(42)
  • C++ 设计模式之外观模式

    【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C++编码部分】 【简介】什么是外观模式         外观模式 Facade Pattern , 也被称为“⻔⾯模式”,是⼀种 结构型设计模式 ,外观模式定义了⼀个⾼层接⼝,这个接⼝使得

    2024年01月17日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包