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

我们通过一个简单的开关电脑模拟程序来说明Facade模式(外观模式)

CPU类

public class Cpu
{
 public void start()
 {
  system.out.print("CPU启动");
 }

 public void stop()
 {
  system.out.print("CPU关闭");
 }

}

 

电脑风扇类

public class Fan
{
 public void start()
 {
  system.out.print("风扇启动");
 }

 public void stop()
 {
  system.out.print("风扇关闭");
 }

}

 

电脑外观类

public class ComputerFacade
{
 Cpu cpu = null;
 Fan fan = null;

 public ComputerFacade()
 {
  cpu = new Cpu();
  fan = new Fan();
 }

 public void open()
 {
  cpu.start();
  fan.start(); 
 }

 public void close()
 {
  cpu.stop();
  fan.stop(); 
 }

}

可以想象,开电脑的时候我们不管Cpu如何启动,风扇如何启动,只要按一下开关就行了。

 

来看一下外观模式的定义

将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用。这在某种意义上与Adapter及Proxy有类似之处,但是,Proxy(代理)注重在为Client-Subject提供一个访问的中间层,如CORBA可为应用程序提供透明访问支持,使应用程序无需去考虑平台及网络造成的差异及其它诸多技术细节;Adapter(适配器)注重对接口的转换与调整;而Facade所面对的往往是多个类或其它程序单元,通过重新组合各类及程序单元,对外提供统一的接口/界面。

 

参考地址:http://baike.baidu.com/view/2960561.htm

 

 

时间: 2024-11-17 10:24:51

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

C++设计模式编程中Facade外观模式的使用实例解析_C 语言

外观模式提供了一个统一的接口,用来访问子系统的一群接口.外观定义了一个高层接口,让子系统更容易使用.外观模式让接口变得简单,简化了子系统的接口.外观模式十分简单,简而言之,就是简化你的类的接口,将一系列的复杂的过程封装到内部,对外只提供最简单的接口.结构图: 适用场景:当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变得越来越复杂.大多数模式使用时都会产生更多更小的类.这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难.F

设计模式中的facade外观模式在JavaScript开发中的运用_基础知识

概念 外观模式(门面模式),是一种相对简单而又无处不在的模式.外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用. 外观模式并不是适配器模式,适配器模式是一种包装器,用来对接口进行适配以便在不兼容系统中使用它.而创建外观元素则是图个方便.它并不用于达到需要特定接口的客户系统打交道这个目的,而是用于提供一个简化的接口. JavaScript代码示例 用一段再简单不过的代码来表示 var getName = function(){ return ''svenzeng" } var ge

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

复制代码 代码如下: <?php /** * 外观模式 示例 * * 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得这一子系统更加的容易使用 */ class SubSytem1 { public function Method1() { echo "subsystem1 method1<br/>"; } } class SubSytem2 { public function Method2() { echo "subsystem2 meth

php设计模式 Facade(外观模式)_php技巧

模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.外观模式又称为门面模式,它是一种对象结构型模式. 模式结构: 外观模式的就是让client客户端以一种简单的方式来调用比较复杂的系统,来完成一件事情. Subsystem: 复制代码 代码如下: class car { public function start() { print_r("

通过C++程序示例理解设计模式中的外观模式_C 语言

举一个生活中的小例子,大凡开过学或者毕过业的都会体会到这样一种郁闷:你要去 n个地方办理 n 个手续(现在大学合并后就更加麻烦,因为可能那 n 个地方都隔的比较远). 但是实际上我们需要的就是一个最后一道手续的证明而已,对于前面的手续是怎么办的.到什么地方去办理我们都不感兴趣. 实际上在软件系统开发中也经常回会遇到这样的情况,可能你实现了一些接口(模块),而这些接口(模块)都分布在几个类中(比如 A 和 B.C.D):A 中实现了一些接口,B 中实现一些接口(或者 A 代表一个独立模块,B.C.

C# 设计模式系列教程-外观模式_C#教程

1. 概述 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 2. 模式中的角色 2.1 外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求代理给恰当的子系统对象. 2.2 子系统类集合(SubSystem Classes):子系统类集合实现了子系统的功能,处理外观类对象指派的任务. 3. 模式解读 3.1 外观模式的类图 3.2 外观模式的代码实现 /// <summary> /// 子系统中的一个类 /// <

实例解析设计模式中的外观模式在iOS App开发中的运用_IOS

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义 一个高层接口,这个接口使得这一子系统更加容易使用. 下面给大家展示一下类的结构图,想必大家一看就明白了: 其实这个模式中,没有类与类之间的继承关系,只是进行了简单的类引用,统一了对外的接口而已.看起来是不是很简单?废话不多说了,下面简单向大家展示一下代码吧! 注意:本文所有代码均在ARC环境下编译通过. SubSystemOne类接口 复制代码 代码如下: #import <Foundation/Foundation.

设计模式之Facade(外观)

Facade的定义:为子系统中的一组接口提供一个一致的界面. Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作: public class DBCompare { Connection conn = null: PreparedStatement prep = null: ResultSet rset = null: try { Class.forName( "<:driver>:" ).newInstance(): conn = DriverMana

.net设计模式实例之外观模式(Fa&amp;amp;ccedil;ade Pattern)

一.外观模式简介(Brief Introduction) 外观模式,为子系统的一组接口提供 一个统一的界面,此模式定义了一个高层接口,这一个高层接口使的子系统更加容易使用. 二.解决的问题(What To Solve)1.分离不同的两个层 典型的分层例子是 Net三层架构,界面层与业务逻辑层分离,业务逻辑层与数据访问层分类.这样可以为子系 统提供统一的界面和接口,降低了系统的耦合性. 2.减少依赖 随着功能增 加及程序的重构,系统会变得越来越复杂,这时增加一个外观可以提供一个简单的接口,减 少他