设计模式之(Facade)外观模式

1. 需求

要设计一个家庭媒体中心程序,可以连接DVD,电视(TV)和功放(Sounder),连接好之后,可以一键看电影,一键听音乐。(不用媒体中心的话看电影需要依次打开DVD,TV和Sounder)。

2. 分析

我们需要将实现细节封装起来,只暴露出来最简单的接口给客户程序,比如说WatchMovie和ListenMusic。

3. 类图

4. 总结

Facade模式用于将多个对象复杂的交互细节封装成简单的接口,跟Adapter模式的区别在于,Adapter模式突出转接的概念,Facade突出封装的概念。

时间: 2024-10-13 21:58:07

设计模式之(Facade)外观模式的相关文章

设计模式(十一):FACADE外观模式 -- 结构型模式

1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性.例子1:一个电源总开关可以控制四盏灯.一个风扇.一台空调和一台电视机的启动和关闭.该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计. 2. 问题 为了降低复杂性,常常将系统划分为若干个子系统.但是如何做到各个系统之间的通信和相互依赖关系达到最小呢? 3. 解决方案 外观模式:为子系统中的一组接口提供一个一致的界面,

设计模式学习之外观模式(Facade,结构型模式)(8)

1.什么是外观模式为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 2.为什么要使用外观模式在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,从而导致客户程序随着子系统的变化而变化,那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦? 现在来考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认:到银行子系统查询他是否有足够多的存款,到信用子系统查询他是否有良好的信

C#设计模式之十外观模式(Facade Pattern)【结构型】

原文:C#设计模式之十外观模式(Facade Pattern)[结构型] 一.引言 快12点半了,要开始今天的写作了.很快,转眼设计模式已经写了十个了,今天我们要讲[结构型]设计模式的第五个模式,该模式是[外观模式],英文名称是:Facade Pattern.我们先从名字上来理解一下"外观模式".我看到了"外观"这个词语,就想到了"外表"这个词语,两者有着很相近的意思.就拿谈恋爱来说,"外表"很重要,如果第一眼看着很舒服.有眼

Facade——外观模式

Facade外观模式,也是比较常用的一种模式,基本上所有软件系统中都会用到. GOF 在<设计模式>一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.简单说,就是将复杂的逻辑封装起来,对外公开简单的接口,由客户程序调用.客户对象通过一个外观接口读写子系统中各接口的数据资源. 适用情景: (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式. (2)开发阶段,子系统越来越复杂,增加外观模式提供一

Android设计模式--外观模式

问题:在Android中,Apk可以有微信,QQ为代表的插件式安装更新功能: 那么问题来了,主系统(姑且这么说)调用插件式安装的子系统,由子系统提供对外的访问,属不属于一种外观模式呢? 先说设计模式: 1.定义: 为子系统中的一组接口提供一个统一接口: Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用. 2.目的: 降低对子系统的复杂度和依赖.这使得子系统更易于使用和管理. 提高代码的质量,代码维护性,扩展性. 3.设计: 在设计之初,就要有意识的将两个不同的层面分离,层与层之

Facade(外观)模式

Facade(外观)模式是一个功能介于工具包和完整应用程序之间的类,可提供包或子系统中类的简化功能. Facade模式通常起源于普通的程序开发.当从多个不同类中分离你的代码时,可能需要通过提取访问子系统的类来重构系统. /* * Copyright (c) 2001, 2005. Steven J. Metsker. * * Steve Metsker makes no representations or warranties about * the fitness of this softw

java设计模式 GOF23 10 外观模式

一.外观模式简介 外观模式是为了解决类与类之间的依赖关系,这种模式将类与类之间的关系放到一个Facade类中,从而降低类与类之间的耦合. 二.简单代码实现 package com.lz.facade; /* * 外观模式 * 门面对象 */ public class RegisterFacade { public void register() { new 南京工商局().checkName(); new 南京税务局().taxCertificata(); } } package com.lz.

Facade外观模式(C++实现)

外观模式:外观模式的意图是为系统中的大量对象提供一个一致的对外接口,以简化系统的使用.它提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.但外观并不屏蔽系统里的对象,如果需要,用户完全可以越过外观的包装使用底层对象以获得更灵活的功能. 外观模式结构图如下: 给出一个简单的C++实现 #include<iostream> using namespace std; class SubSystemA { public: SubSystemA(){} ~Su

设计模式学习心得&lt;外观模式 Facade&gt;

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用. 概述 意图 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决 降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口. 何时使用 客户端不需要知道系统

c#设计模式之:外观模式(Facade)

一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 "门面"模式.下面就具体介绍下外观模式. 二.外观模式的详细介绍 2.1定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部