展开

关键词

设计Facade

一 意图  为子系统中的一组接口提供一个一致的界面,Facade定义了一个高层接口,这个接口使得这一子系统更加容易使用。二 动机  将一个系统划分成为若干个子系统有利于降低系统的复杂性。 当你需要构建一个层次结构的子系统时,使用Facade定义子系统中每层的入口点。仅通过facade进行通讯。结构:?Facede:   知道哪些子系统类负责处理请求。   客户程序通过发送请求给Facade的方与子系统通讯, Facade将这些消息转发给适当的子系统对象。 尽管是子系统中的有关对象在做实际工作,但Facade本身也必须将它的接口转换成子系统的接口。  Facade有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。   Facade可以消除复杂的循环依赖关系。降低客户-子系统之间的耦合度。  使用Facade的客户程序不需要直接访问子系统对象。

52430

13.设计--外观(Facade)

1.定义 Facade名为外观,是一种结构型,外观是一种非常简单的设计。 而我只需要关注这个外观的人就行了。 2.外观结构图 Facade就是一个窗口,注册公司的流程都由他来处理,而AdminOfIndustry、Bank、Taxation分别表示工商注册、银行开户和纳税登记。 外观中登场的角色 Facade(窗口)角色,用于将复杂的系统进行整合然后暴露出一个窗口提供给调用者,文中由Facade类进行扮演。 参考文献《图解设计》、廖雪峰的官网。代码获取地址:https:gitee.combughongdesign-pattern

5020
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    设计的征途—11.外观(Facade

    外观Facade) 学习难度:★☆☆☆☆ 使用频率:★★★★★ 一、文件加密块设计1.1 需求背景 M公司想要开发一个用于多个软件的文件加密块,该块可以对文件中的数据进行加密并将加密后的数据存储在一个新文件中 二、外观概述2.1 外观简介  根据单一职责原则,在软件中将一个系统划分为若干个子系统有利于降低整个系统的复杂性,一个常见的设计目标就是使客户类与子系统之间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观 外观(Facade:外部与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致的入口,外观定义了一个高层接口,这个接口使得这一子系统更加容易使用。   2.2 外观结构与角色  外观没有一个一般化的类图描述,通常使用示意图来表示外观,如下图所示:?  当然,下图所示的类图也可以作为外观的结构型描述形之一。?   外观主要包含两个角色:  (1)Facade(外观角色):在客户端可以调用这个角色的方法,在外观角色中可以知道相关的子系统的功能和责任;在正常情况下,它将所有从客户端发来的请求委派到相应的子系统中去

    19520

    外观门面Facade-结构型设计

    外观(Facade又叫作门面,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的。 该对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 符合迪米特原则如果我想使用多个类的代码,先创建个门面类统一去调用,我只需要和这个门面打交道,不用去了解那些类的细节这个就是门面类,我想执行的时候只需要知道调用门面类的run方法就行了class Facade = $os; } public function run() { $this->bios->run(); $this->os->runOs(; }}Os类和Bios类都有自己的具体实现具体使用的时候facade = new Facade(bios, os);facade->run();

    15520

    门面(Facade)

    Facade的几个要点从客户程序的角度来看,Facade不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到 Facade接口的变化。 Facade设计更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计结构? UML.pngFacade ° 知道哪些子系统类负责处理请求 ° 将客户的请求代理给相应的子系统对象Subsystem Classes ° 实现子系统的功能 ° 处理由Facade对象指派的任务来协调子系统下各子类的调用方在外观图例假设我们需要开发一个坦克拟系统用于拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。?结构.png?

    37420

    外观(Facade)

    外观(Facade)为子系统中的一组接口提供一个一致的界面,Facade定义了一个高层接口,这个接口使得这一子系统更加容易使用。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。 例子:拟电脑启动,假设电脑启动顺序:启动CPU,启动内存,启动硬盘,加载数据等。

    21730

    Facade外观(结构性)

    COntrollerActionB() { } } #endregion public class TankFacade { 注入相关坦克系统的组件,如果引擎、车轮这些可能会有风格的变化,可以考虑使用工厂来实现注入 public class GameSystem { private TankFacade tankFacade = null; 开始游戏 public void Run() { TankFacade facade 4、要点(1)、从客户程序的角度来看,Facade补不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,达到了一种解耦的效果,内部子系统的变化不会影响到Facade接口的变化.(2)、 Facade更注重从架构的层次去看待整个系统,而不是单个类的层次,更多的时候是一种架构设计.(3)、Facede与Apater、Bridge、Decorator的区别,Facede 注重简化接口,Apater注重转换接口(将现有接口转换成客户需要的接口),Bridge接口的分离(即系统按照两个维度及以上的变化适合使用Bridge),Decorator注重稳定接口的情况下

    19520

    Java 设计facade(外观)设计

    https:louluan.blog.csdn.netarticledetails18843073 概述:      Facade要求一个子系统的外部与其内部的通信通过一个统一的Facade对象进行 Facade提供一个高层次的接口,使得子系统更易于使用。      下面是 StarUML 提供的GoF 设计的帮助文档,本人做了粗糙的标注,以飨读者。 门面定义了一个更高级别的接口,以使子系统更好地被使用。 Structure (组成结构)? 门面有助于系统和对象之间的依赖关系进行分层。它们可以消除复杂或者环形的依赖关系。(门面)是在对客户和子系统之间独立实现(的解决方案)中很重要的一个结论。

    26350

    【设计】—— 外观Facade

    意图  外观主要是为了为一组接口提供一个一致的界面。从而使得复杂的子系统与用户端分离解耦。  有点类似家庭常用的一键开关,只要按一个键,台灯卧室客厅的灯都亮了。 结构?   Facade 对外的统一接口class Facade{ public void operation(){ subsystemClass1.operation(); subsystemClass2.operation operation(){ System.out.println(subsystemClass2 operation()); }}  代码结构package com.xingoo.facade;class Facade facade = new Facade(); facade.operation(); }}  运行结果subsystemClass1 operation()subsystemClass2 operation

    25770

    设计 | 门面 Facade

    说明门面又叫外观,这个设计也比较简单,比较容易理解,其实在我们正常编码中就已经写出了门面,但是我们并不知道这个写法是叫门面。 门面的定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。

    16920

    Java外观(门面Facade)

    外观  外观也叫门面,是开发过程中使用频率非常高的一种设计,但非常容易理解。概念介绍  外观Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。 这种类型的设计属于结构性。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。? 代码案例  拟办理公司的流程具体实现** * 银行 * @author 波波烤鸭 * @email dengpbs@163.com * *public interface Bank { void openAccount 各种技术和框架中,都有外观的使用。 JDBC封装后的, commons提供的DBUtils类, Hibernate提供的工具类、 Spring JDBC工具

    52820

    设计之外观Facade Pattern)外观的优缺点

    外观外部访问内部复杂代码的一个接口,举个例子,我们知道打开一台电脑很简单,只要按开机键,但实际上在后台我们看不到的地方,计算机进行了很多复杂的工作,比如,cpu。内存。硬盘等的启动。 实际上这里就是使用了外观,外观提供了一个简单的接口,为我们封装好了访问内部代码的复杂操作,有了外观,我们只需要简单的按下开机键,就可以自动调用cpu。硬盘。内存的方法帮我们启动电脑。? Paste_Image.png参看外观的类图,我们可以看到外观将多个复杂的操作封装起来,只对外提供一个简单的接口。 ) { }} class HardDrive { public void readdata() { }} * Facade *class Computer { private CPU cpu; private ,对修改关闭,对扩展开放 我们知道外观将子系统封装起来,我们无法修改子系统,只能外部扩展

    45130

    【设计自习室】门面 Facade Pattern

    前言《设计自习室》系列,顾名思义,本系列文章带你温习常见的设计。 主要内容有:该的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该的代码示例:熟悉该的代码长什么样子该的优缺点:不是万金油,不可以滥用的应用案例:了解它在哪些重要的源码中被使用结构型 ——外观门面 Facade Pattern引子门面便是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。 定义门面Facade Pattern) 也叫做外观, 是一种比较常用的封装,Provide a unified interface to a set of interfaces in a ,它只需要跟Facade类交互即可。

    16730

    浅谈JAVA设计之——外观(Facade)

    一、概述 为子系统中的一组接口提供一个一致的界面,Facade定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、适用性为一个复杂子系统提供一个简单接口时。 大多数使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。 引入facade将这个子系统与客 户以及其他的子系统分离,可以提高子系统的独立性和可移植性。需要构建一个层次结构的子系统时,使用facade定义子系统中每层的入口点。 处理由Facade对象指派的任务。没有facade的任何相关信息;即没有指向facade的指针。 Facade facade = new Facade(); facade.methodA(); facade.methodB(); }} result这是服务A这是服务B========这是服务A这是服务

    18510

    【设计自习室】门面 Facade Pattern

    前言《设计自习室》系列,顾名思义,本系列文章带你温习常见的设计。 主要内容有:该的介绍,包括: 引子、意图(大白话解释)类图、时序图(理论规范)该的代码示例:熟悉该的代码长什么样子该的优缺点:不是万金油,不可以滥用的应用案例:了解它在哪些重要的源码中被使用 结构型——外观、门面 Facade Pattern引子门面便是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。 定义门面Facade Pattern) 也叫做外观, 是一种比较常用的封装, Provide a unified interface to a set of interfaces in 门面提供一个高层次的接口, 使得子系统更易于使用。 ) 类图如果看不懂UML类图,可以先粗略浏览下该图,想深入了解的话,可以继续谷歌,深入学习:?门面类图:?

    28020

    设计 (9)——外观Facade Pattern,结构型)

    1.概述使用设计可以提高代码的可复用性、可扩充性和可维护性。外观Facade Pattern)属于结构型,提供了一个统一的接口(具体类),用来访问子系统的一群接口(具体类)。 要想使用外观,我们需要创建一个函数接口简化而统一的类,用来包装子系统中一个或多个复杂的类。外观类结构清晰,容易理解,允许我们让客户和子系统之间避免紧耦合。 Facade:外观类,知道哪些子系统类负责处理请求,将客户端的请求代理给适当的子系统对象。 Subsystem:子系统类,实现子系统功能,处理外观类指派的任务,注意子系统类不含有外观类的引用。 外观应用了最少知道原则(Least Knowledge Principle),又称为迪米特法则(Law of Demeter)。该原则要求一个对象减少对其他对象的交互,只与几个“密友”交谈。 最少知道原则在中介者中也有应用。2.外观的简单应用本文我们举武侠的例子,我们把《倚天屠龙记》张无忌当作一个系统,他作为一个武侠,本身分为三个子系统,分别是招、内功和经脉。

    16720

    真实世界的设计 | 外观Facade Pattern)

    ----Facade(外观)Rust 中最常用的设计是哪个?答案是,外观。为什么这么说?看完本文就明白了。一句话介绍Facade,中文术语叫「外观」,也叫「门面」。 在经典设计中,归为结构型(Structural)分类,因为这种用于帮助构建结构。它可以为程序库、框架或其他复杂情况提供一个简单的接口。 Facade ,帮忙建立了统一的接口,使得调用复杂的子系统变得更加简单。因为 Facade 只包括应用真正关心的核心功能。 mio 库中的 poll 方法,就使用了门面。 结语综上,门面是 Rust 应用最广泛的一个设计。感谢阅读,如有错漏,欢迎反馈和补充。

    26930

    深入理解 Cookie 与 Session ,Facade 设计, 分布 Session

    会话也是在无连接通信下传输的基本步骤。但是,任何单向传输都不会定义会话。通信传输可以被实现为在协议和服务的一部分的应用层,在会话层或在传输层中的 OSI 型。 Facade 设计: facade外观是一种非常常用的,特别是在组织一些复杂的相互调用的逻辑的时候,为外界提供统一的接口(API),可以看到在设计中,最常用的应该就是板方法和facade 带着几个问题来看:1.为什么 StandardSession 要搞一个外观? 3.外观怎么实现屏蔽的呢? 看到这里感觉到以后如果设计系统的时候就可以参考这个例子,通过外观和双重派分的方来实现。

    34630

    外观Facade Pattern) - 最易懂的设计解析

    ----前言今天我来全面总结一下Android开发中最常用的设计 -外观 ----目录?----1. 原理2.1 UML类图 & 组成?2.2 实例讲解接下来我用一个实例来对建造者进行更深一步的介绍。 a. facade = new Facade(light,television,aircondition); 客户端直接与外观对象进行交互 facade.on; System.out.prinln(可以看电视了 这样的实现方非常类似适配器,然而外观与适配器不同的是:适配器是将一个对象包装起来以改变其接口,而外观是将一群对象 ”包装“起来以简化其接口。 总结本文主要对外观进行了全面介绍,接下来将介绍其他设计,有兴趣可以继续关注Carson_Ho的最易懂的设计解析笔记!!!!----

    19230

    外观 门面 Facade 创建型 设计(十三)

    外观FACADE)又称为门面 意图 为子系统中的一组接口提供一个一致的界面Facade定义了一个高层接口,这一接口使得这一子系统更加易于使用。 外观的意图含义,如同他的名字一样,“建筑物的正面”面对一个复杂的大楼,当你在正面远远望去,也就只能看到正面在外观中,形容一个庞大的复杂的系统的一个直观的界面借助于Facade从原来的“客户端需要跟多个子系统进行交互    :子系统并不是说一个单独的类,而是一个类的集合,这些类根据逻辑功能点被组织在一起  子系统并不知道Facade的存在,对于子系统来说,Facade也就只是一个客户端程序外观的结构比较简单,类似一个 ,Facade则极有可能需要面临修改,这不符合开闭原则 外观(门面)就如同我们开篇的图片一样,作为公司前台接待来访宾客,一切事宜都有她来协调安排组织。 原文地址:外观 门面 Facade 创建型 设计(十三)

    21830

    扫码关注云+社区

    领取腾讯云代金券