`

【转】设计模式——外观模式(Facade)

 
阅读更多

外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,

而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口。

我们以一个计算机的启动过程为例:

◆CPU类:

public class CPU {

 

public void startup(){

System.out.println("cpu startup!");

}

 

public void shutdown(){

System.out.println("cpu shutdown!");

}

}

 

◆Memory类:

public class Memory {

 

public void startup(){

System.out.println("memory startup!");

}

 

public void shutdown(){

System.out.println("memory shutdown!");

}

}

 

◆Disk类:

public class Disk {

 

public void startup(){

System.out.println("disk startup!");

}

 

public void shutdown(){

System.out.println("disk shutdown!");

}

}

 

◆Computer类:

public class Computer {

private CPU cpu;

private Memory memory;

private Disk disk;

 

public Computer(){

cpu = new CPU();

memory = new Memory();

disk = new Disk();

}

 

public void startup(){

System.out.println("start the computer!");

cpu.startup();

memory.startup();

disk.startup();

System.out.println("start computer finished!");

}

 

public void shutdown(){

System.out.println("begin to close the computer!");

cpu.shutdown();

memory.shutdown();

disk.shutdown();

System.out.println("computer closed!");

}

}

 

◆User类:

public class User {

 

 

public static void main(String[] args) {

Computer computer = new Computer();

computer.startup();

computer.shutdown();

}

}

 

◆输出:

start the computer!

cpu startup!

memory startup!

disk startup!

start computer finished!

begin to close the computer!

cpu shutdown!

memory shutdown!

disk shutdown!

computer closed!

 

 

 

如果我们没有Computer类,那么,CPU、Memory、Disk他们之间将会相互持有实例,产生关系。

这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了Computer类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,

这就是外观模式!

--------------------- 

作者:panzihao_beijing 

来源:CSDN 

原文:https://blog.csdn.net/PanZiHao_BeiJing/article/details/80417160 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    设计模式可复用面向对象软件的基础.zip

    4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator...

    23种 设计模式---面向对象的基本原则

    - 外观模式(Facade):为子系统提供一个统一的接口,使得子系统更加易于使用。 - 适配器模式(Adapter):将两个不兼容的接口转换为兼容的接口,使得原本因接口不兼容而不能一起工作的类可以协同工作。 - 桥接...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...

    设计模式代码——c#

    10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) ...

    设计模式精解-GoF 23种设计模式解析.pdf

    ### 设计模式精解——GoF 23种设计模式解析 #### 0. 引言 设计模式作为面向对象编程的重要组成部分,在软件工程领域扮演着至关重要的角色。本书《设计模式精解——GoF 23种设计模式解析》旨在深入浅出地介绍由...

    设计模式PPT---25种设计模式详解

    这份名为“设计模式PPT——25种设计模式详解”的资料,显然是一个深入探讨设计模式的教程,它通过PDF格式对25种主要的设计模式进行了详尽的阐述。 首先,我们要理解设计模式的基本概念。设计模式不是代码,而是一种...

    X-gen PPT下载——《研磨设计模式》 实战

    2. **结构型模式**:如适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式处理对象之间的关系...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **2.6 Facade模式**:外观模式为子系统中的一组接口提供一个一致的界面,简化了系统的使用。 - **2.7 Proxy模式**:代理模式提供一个代理对象来控制对一个对象的访问。 #### 3. 行为模式 行为模式关注的是对象...

    外观模式 Facade Pattern

    ### 外观模式 (Facade Pattern) #### 概述 外观模式是一种重要的设计模式,属于结构型模式之一。其核心在于通过引入一个简单的接口来隐藏一个系统中存在的复杂性,从而简化了客户端对该系统的使用。该模式的主要...

    设计模式 让你轻松理解设计模式,提高开发效率

    外观模式(Facade) 外观模式是一种结构型设计模式,它为子系统中的一组接口提供一个一致的界面,该模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。文章中提到的“Nikon相机”,通过外观模式为复杂...

    设计模式C++版

    设计模式C++版文档主要聚焦于面向对象设计与分析的核心——设计模式,并以C++语言实现为示范。这份文档详尽阐述了23种GoF(Gang of Four)设计模式,并结合具体的C++源码示例,旨在帮助读者深入理解并掌握这些设计...

    facade:Facade的实现——软件设计模式

    Facade(外观)模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。Facade模式使得客户端与复杂的子系统之间交互变得简单,客户端只需要与Facade交互,而无需了解子系统内部的复杂性。...

    深入浅出设计模式(中文版电子版)

    4.5FacadePattern(外观模式) 134 4.5.1定义 134 4.5.2现实中的实例——顾客服务员 135 4.5.3C#实例——抵押申请审核 136 4.5.4Java实例——冲茶 139 4.5.5优势和缺陷 143 4.5.6应用情景 143 4.6...

    设计模式-可复用面向对象软件的基础

    包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、组合模式(Composite)、外观模式(Facade)、享元模式(Flyweight)和代理模式(Proxy)。它们帮助我们在不同的对象之间建立关系,实现...

    管理系统javasal源码-Design-Patterns-Demo:超全的设计模式——理论+实现demo

    管理系统java sal源码 [toc] 设计模式 源码地址: 博客地址: 分类 序号 模式 & ...创建型模式:这些设计模式提供了一种在...Pattern)外观模式(Facade Pattern)享元模式(Flyweight Pattern)代理模式(Proxy Pattern)

    几个设计模式c++实现源码

    以下是对标题和描述中提到的三个设计模式——抽象工厂模式、适配器模式和外观模式的详细解释: 1. 抽象工厂模式: 抽象工厂模式是一种创建型设计模式,它提供一个接口来创建相关或依赖对象的家族,而无需指定它们的...

    GoF 23种设计模式解析附C++实现源码(2nd Edition

    - **4.4 为什么使用设计模式——从Singleton模式谈起**:这部分从Singleton模式出发,探讨了设计模式在软件开发中的重要性和必要性,以及如何正确地选择和使用设计模式。 #### 5. 附录 - **5.1 关于设计模式的思考...

    设计模式--可复用面向对象软件的基础(中文)

    使它们可以独立变化,组合模式(Composite)用于表示部分-整体的层次结构,以及外观模式(Facade)为子系统提供一个统一的接口。 3. **行为型模式**:这类模式主要关注对象之间的交互和责任分配,包括策略模式...

    设计模式之外观模式

    本篇文章将通过一个具体的案例——使用外观模式实现教室设备的控制器来深入解析这一设计模式。 #### 二、外观模式简介 ##### 2.1 定义 外观模式(Facade Pattern),也称为门面模式,是一种结构型设计模式,用于...

Global site tag (gtag.js) - Google Analytics