首页 > 其他分享 >外观模式(facade)

外观模式(facade)

时间:2023-09-07 18:22:15浏览次数:40  
标签:__ 外观 封装 接口 Facade 模式 facade 子系统

外观模式(Facade)

1、作用

(1)、将各个子系统的接口汇聚在一起,定义一个统一的接口方便客户使用,满足“迪米特法则”,即客户不需要了解子系统,只需要知道Facade模式封装的类即可以使用所有子系统。

(2)、隔离用户和子系统,将用户与子系统解耦,当子系统有修改是,顶多修改Facade模式封装的类,无需修改用户代码。

2、实现方式

这个模式有点像适配器模式。

相同点:都是接口在套一层接口。

不同点:(1)、适配器模式,外层接口与内存层接口不一样,而外观模式一般是内存接口和外层接口一样,甚至名字都一样。

          (2)、适配器模式只封装一个接口,外观模式则是封装很多子系统的接口。

下面以一个MobilePhone的大系统通过Facade模式封装子系统功能的UML图:Facade就是系统封装子系统的接口,用户通过调用系统层(Facade)的接口来调用子系统。

img

3、C++代码

MobilePhone.h

#include <iostream>


#ifndef __MOBILE_PHONE__H__
#define __MOBILE_PHONE__H__

using namespace std;


class BaseBand {
    public:
        void call() { cout<<"打电话..."<<endl; }
        void hungup() { cout<<"挂电话..."<<endl; }
};


class Camera {
    public:
        void takePicture() { cout<<"拍照片"<<endl; }
};


class MobilePhone {
    public:
        void call() { baseBand.call(); }
        void hungup() { baseBand.hungup(); }
        void takePicture() { camera.takePicture(); }
    private:
        BaseBand baseBand;
        Camera   camera;
};


#endif

test.cc

#include "MobilePhone.h"

int main() {
    MobilePhone mobilePhone;
    mobilePhone.call();
    mobilePhone.hungup();
    mobilePhone.takePicture();


    return 0;
}

输出:

img

标签:__,外观,封装,接口,Facade,模式,facade,子系统
From: https://www.cnblogs.com/yuandonghua/p/17685773.html

相关文章

  • 桥接模式
    桥接模式1作用当类的模型有两个或多个维度的时候,如果两个变化维度用同一个类使用继承方式实现会变得很复杂(冗余代码很多),不易于维护和扩展(继承关系是一种强耦合关系),为了降低耦合关系,提高维护性和可扩展性,可以将两个变化维度的通过两个类(abstruction、implementor类)来实现,将两......
  • 韬客时代卷轴模式系统开发介绍和部分核心源码
    韬客时代是一种卷轴模式系统。什么是卷轴模式呢?新用户注册,先送你一部分积分,该积分用于兑换一个初始任务,俗称卷轴!卷轴模式的赚钱的原理是,你用积分兑换初级任务包,完成卷轴任务之后,你可以获得更多的积分,然后复投,达到一定数量后可以兑换更高级的任务包,任务包越高级每次获得的积分也就越......
  • kafka复习:(24)consume-transform-produce模式
    packagecom.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;importorg.apache.kafka.clients.consumer.*;importorg.apache.kafka.clients.producer.KafkaProducer;importorg.apache.kafka.clients.producer.ProducerConfig;importorg.apache.kafka.clients.produc......
  • 区域LIS应用平台 云技术的SaaS模式
    在医疗机构内部,院内实验室主要负责本院临床科室的检验,院内LIS系统必须满足实验室日常的标本处理入库、仪器联机、检验结果处理、报告打印、报告发布、检验信息统计、检验信息报告发布、标本流程、外部医疗机构检验报告调阅等工作。 在医疗机构间,一方面在区域卫生信息平台上构建区......
  • 一文搞定,PO设计模式详解
    PO模式:全称:pageobjece,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复⽤性。PO模式的优势:1)效率⾼:同理,PO模式的逻辑层⽅法有具体定义,情况和元素发⽣变化⼀样修改逻辑层,业务层不变。这样看来结构简单清晰,舒服更符合⼈类习惯,普通⽅式就是继续堆case。2)复⽤多收益⼤:同样......
  • 从追MM谈Java的23种设计模式
    1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory.以下是引用片段:实例一:publicclassFactory{......
  • 12种微服务模式
    释放微服务的力量您是否正在努力构建高效、可扩展且有弹性的软件系统?作为软件开发人员或高级开发人员,您一定遇到过“微服务架构”一词。这种革命性的软件开发方法已被许多成功的科技巨头采用,例如Netflix、亚马逊和Spotify。但是,微服务到底是什么,你为什么要关心?微服务架构是一种软......
  • 行为型设计模式-备忘录 Memento
    简介允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态,该状态保存在对象之外,这样就可以不破坏原有对象的封装性了。角色Originator原发器即需要被保存状态的类抽象Memento备忘录类定义备忘录基本接口可以看做成是快照Snapshot具体Memento备忘录类实......
  • 行为型设计模式-状态 State
    简介跟状态机密切相关。有限状态机FSM包含状态、事件、动作三个元素。当发生一个事件时,引发老状态变成新状态,并执行一个动作。状态和行为间一般是有限制的,如某些行为只能再某些状态下进行,某些状态只能触发某些行为。简单的状态间转换可使用ifelse。更有条理的可以用查表......
  • 行为型设计模式-策略 Strategy
    简介一组实现了同一个策略接口的策略,可以随时指定用哪一种策略完成业务。策略模式其实跟桥接模式很像,都是通过持有另一个对象,达到组合的效果。角色Context上下文可设置使用的Strategy抽象Strategy具体Strategy类图如图,Context使用setStrategy方法设置当前使......