设计模式——外观模式

转载 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、如果客户希望使用词法分析器,只需定义词法分析的类对象即可,并不受到限制。

相关文章推荐

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

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

JAVA设计模式——外观模式

外观模式 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 设计原则:“最少知识”原则(Least Knowledge)——就任何对象而言,在该对象的...
  • cai1213
  • cai1213
  • 2012年09月20日 17:54
  • 2936

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

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

C#设计模式——外观模式

外观模式: 外观模式是很常用的模式,在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从...

外观模式——结构型设计模式之五

一、外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。   为什么使用外观模式?       当股票一,二,三,国债一,二任...

设计模式——外观模式

外观模式在我们的项目中使用的还是比较普遍的。外观模式遵守了设计模式六大原则之一的迪米特法则(最少知识法则),一个应用实体应当尽可能少的与其他实体发生相互作用。 外观模式的实用性: 1.为一个复杂子...

《Head First 设计模式》阅读笔记(七)——适配器和外观模式

详细介绍了适配器模式的两种实现方式:类适配器和对象适配器。并附上了经过测试的c++示例代码。 简略介绍了外观模式。 最后,对适配器模式、外观模式、命令模式做了些分析比较。...
  • tankery
  • tankery
  • 2011年02月17日 12:18
  • 501

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

外观模式的简单介绍外观模式在开发过程中的运用频率非常高,尤其是在现阶段各种第三方 SDK 充斥在我们的周边,而这些 SDK 很大概率会使用外观模式。通过一个外观类使得整个系统的接口只有一个统一的高层接...
  • AkaiC
  • AkaiC
  • 2016年11月02日 20:47
  • 197

如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)

如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)标签: 设计模式初涉场景引入相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧:       分别是瑞雯和盲僧,...

Java 设计模式——外观模式

概述今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式。本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解。希望于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式——外观模式
举报原因:
原因补充:

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