设计模式——外观模式

转载 2013年12月04日 22:59:12

         外观模式应该是用的很多的一种模式,特别是当一个系统很复杂时,系统提供给客户的是一个简单的对外接口,而把里面复杂的结构都封装了起来。客户只需使用这些简单接口就能使用这个系统,而不需要关注内部复杂的结构。DP一书的定义:为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。举个编译器的例子,假设编译一个程序需要经过四个步骤:词法分析、语法分析、中间代码生成、机器码生成。学过编译都知道,每一步都很复杂。对于编译器这个系统,就可以使用外观模式。可以定义一个高层接口,比如名为Compiler的类,里面有一个名为Run的函数。客户只需调用这个函数就可以编译程序,至于Run函数内部的具体操作,客户无需知道。

       

class Scanner  
{  
public:  
    void Scan() { cout<<"词法分析"<<endl; }  
};  
class Parser  
{  
public:  
    void Parse() { cout<<"语法分析"<<endl; }  
};  
class GenMidCode  
{  
public:  
    void GenCode() { cout<<"产生中间代码"<<endl; }  
};  
class GenMachineCode  
{  
public:  
    void GenCode() { cout<<"产生机器码"<<endl;}  
};  
//高层接口  
class Compiler  
{  
public:  
    void Run()   
    {  
        Scanner scanner;  
        Parser parser;  
        GenMidCode genMidCode;  
        GenMachineCode genMacCode;  
        scanner.Scan();  
        parser.Parse();  
        genMidCode.GenCode();  
        genMacCode.GenCode();  
    }  
};  
int main()  
{  
    Compiler compiler;  
    compiler.Run();  
    return 0;  
}


1、编译器类对客户屏蔽了子系统组件,客户只需处理编译器的对象就可以方便的使用子系统。

2、子系统的变化,不会影响到客户的使用,体现了子系统与客户的松耦合关系。

3、如果客户希望使用词法分析器,只需定义词法分析的类对象即可,并不受到限制。

最常用的设计模式---外观模式(C++实现)

外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。目地:让接口变得简单,是为了简化子系统的接口。...
  • lh844386434
  • lh844386434
  • 2014年01月09日 17:25
  • 1620

JAVA设计模式之门面模式(外观模式)

医院的例子   现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门...
  • jason0539
  • jason0539
  • 2014年04月02日 07:16
  • 25116

面向对象的设计模式(十二),外观模式

终于考试完了,瞬间感觉轻松了许多,又可以安心地写代码了,下面进入今天的正题–外观模式。  外观模式,也称门面模式,顾名思义,就是一个对象封装了一系列相关的操作(行为),使得这些操作仅对外提供(暴露)...
  • ydxlt
  • ydxlt
  • 2016年01月09日 10:09
  • 1133

设计模式——适配器,桥接,外观

简书链接:http://www.jianshu.com/p/602407ed19a0前言本文主要以代码形式实现每一种设计模式,算是自己的一种复习和实践。相应的代码,也会放到github上。 本文的类...
  • game3108
  • game3108
  • 2016年04月17日 19:36
  • 358

设计模式(10)——外观 Facade

设计模式(10)——外观 Facade
  • leonliu06
  • leonliu06
  • 2017年11月05日 13:59
  • 55

【软考学习】设计模式——外观模式

【背景】 设计模式是非常重要的一块知识,每个设计模式都值得深入了解和学习。 【内容】 结构型设计模式总结: 外观(门面)设计模式总结:     一、定义:为子系统...
  • YYM15732626210
  • YYM15732626210
  • 2018年01月14日 23:20
  • 11

外观模式——《参考Head First设计模式》

本文简述了外观模式,并给出了外观模式的C++实现。
  • lisiyuannnn
  • lisiyuannnn
  • 2016年10月24日 15:34
  • 146

Java设计模式10——外观模式

外观模式是最简单的设计模式之一,所以我就不再去重写了,简单的总结转载看到的一篇文章,原文链接:http://blog.csdn.net/jason0539/article/details/227753...
  • xu__cg
  • xu__cg
  • 2016年11月05日 21:09
  • 391

设计模式学习——外观模式(Facade)

此文章为本人看了程杰编写的《大话设计模式》后所写的学习笔记,所涉及代码大部分来自书籍,也有本人原创代码。 定义:为子系统中的的一组接口提供一个统一的界面,此模式定义了一个高层接口,这个接口使得这一子系...
  • qq_29711227
  • qq_29711227
  • 2017年04月24日 08:28
  • 99

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

1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。外观模式(Facade Pattern)属于结构型模式,提供了一个统一的类接口,用来访问子系统的一群类接口。外观定义了一个高层类接口,让...
  • K346K346
  • K346K346
  • 2017年03月05日 11:06
  • 487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式——外观模式
举报原因:
原因补充:

(最多只允许输入30个字)