`

[结构型模式] 外观模式的理解

 
阅读更多



头文件
//FacadePattern.h

#ifndef FACADE_PATTERN_H
#define FACADE_PATTERN_H

#include <Windows.h>
#include <iostream>
using namespace std;

namespace FacadePattern
{
    /*
    ** FileName     : FacadePatternDemo
    ** Author       : Jelly Young
    ** Date         : 2014/1/2
    ** Description  : More information, please go to http://www.jellythink.com
    */

    // 语法分析子系统
    class CSyntaxParser
    {
    public:
        void SyntaxParser();
    };

    // 生成中间代码子系统
    class CGenMidCode
    {
    public:
        void GenMidCode();
    };

    // 生成汇编代码子系统
    class CGenAssemblyCode
    {
    public:
        void GenAssemblyCode();
    };

    // 链接生成可执行应用程序或库子系统
    class CLinkSystem
    {
    public:
        void LinkSystem();
    };

    class Facade
    {
    public:
        void Compile();
    };

    //////////////////////////////////////////////////////////////////////////
    void FacadePattern_Test();
}

#endif

实现
#include "FacadePattern.h"

namespace FacadePattern
{
    void CSyntaxParser::SyntaxParser()
    {
        cout<<"Syntax Parser"<<endl;
    }


    void CGenMidCode::GenMidCode()
    {
        cout<<"Generate middle code"<<endl;
    }


    void CGenAssemblyCode::GenAssemblyCode()
    {
        cout<<"Generate assembly code"<<endl;
    }

    // 链接生成可执行应用程序或库子系统
    void CLinkSystem::LinkSystem()
    {
        cout<<"Link System"<<endl;
    }

    void Facade::Compile()
    {
        CSyntaxParser syntaxParser;
        CGenMidCode genMidCode;
        CGenAssemblyCode genAssemblyCode;
        CLinkSystem linkSystem;
        syntaxParser.SyntaxParser();
        genMidCode.GenMidCode();
        genAssemblyCode.GenAssemblyCode();
        linkSystem.LinkSystem();
    }


    //////////////////////////////////////////////////////////////////////////
    void FacadePattern_Test()
    {
        Facade facade;
        facade.Compile();
    }
}

客户端
#include "FacadePattern.h"


#include <iostream>
using namespace std;
using namespace FacadePattern;

void main()
{
    FacadePattern_Test();
}

运行结果
分享到:
评论

相关推荐

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    设计模式之结构型模式

    结构型模式不仅限于适配器模式和桥接模式,还包括代理模式、装饰模式、外观模式、组合模式和享元模式等。这些模式都致力于优化系统结构,提升代码的可复用性和可维护性。 4. **学习与实践**: 对于初学者来说,理解...

    Java设计模式之结构型模式源码以及文档

    结构型模式可以分为七种:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。这些模式在不同的场景下有着各自的用途,它们可以帮助我们构建出灵活、可扩展的系统。 适配器模式允许两个不...

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式)

    ### C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) #### 一、概述 本篇文章将深入探讨C#面向对象设计模式中的Facade外观模式,这是一种结构型模式,旨在通过提供一个统一的接口来简化复杂的子系统。...

    结构型模式部分知识

    在软件设计领域,结构型模式是面向对象设计中的一种重要思想,它主要关注如何组织类和对象,以形成更复杂的结构,同时保持代码的清晰性和可维护性。本资料是关于高等软件工程中的7大结构型模式的PPT总结,包含了大量...

    09结构型模式1

    外观模式(Facade Pattern)是一种设计模式,属于对象结构型模式,它的主要目的是为了提供一个统一的接口,使得客户端可以方便地与复杂的子系统进行交互,而无需了解子系统的内部细节。这种模式降低了系统的耦合度,...

    C#面向对象设计模式纵横谈-结构型模式(合集)

    这些结构型模式是C#面向对象设计中的重要工具,理解和掌握它们能帮助开发者编写出更加优雅、可扩展的代码。李建忠讲师的课程将深入探讨这些模式的原理、应用场景以及如何在C#中有效实施,对于提升开发者的编程技艺...

    设计模式2-结构型模式&设计模式基本原则

    在本文中,我们将深入探讨结构型模式以及设计模式的基本原则。 结构型模式是设计模式的一种类别,它关注如何组合类和对象以创建更复杂的结构。这类模式主要涉及类和对象的组合,分为类模式和对象模式。类模式使用...

    结构型模型实验报告+源代码.rar

    外观模式(Facade Pattern)提供了一个统一的接口,用来访问子系统的一组接口。它简化了子系统的使用,降低了客户端和子系统之间的耦合度。 最后,享元模式(Flyweight Pattern)用于减少创建对象的数量,以节省...

    设计模式之外观模式案例代码

    **外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以不关心内部的复杂性,只通过这个接口与子系统进行交互。这种模式降低了系统的复杂度,提高了代码的...

    新版设计模式手册 通俗的例子讲述设计的方法 1创建型模式 2结构型模式 3 行为模式 详细的设计说明

    这个“新版设计模式手册”深入浅出地介绍了设计模式的三大类:创建型模式、结构型模式和行为模式,为开发者提供了一套详细的设计说明。 一、创建型模式 创建型模式主要关注对象的创建过程,它们的目标是使得对象的...

    设计模式2-结构型模式.doc

    在本文中,我们将探讨几种结构型设计模式,包括适配器模式、桥接模式、外观模式、享元模式、代理模式和装饰器模式。 1. **适配器模式**: - 适配器模式用于连接两个不兼容的接口,使得原本不能一起工作的类可以...

    软件体系结构实验报告--设计模式2

    外观模式属于结构型设计模式,它为复杂的子系统提供了一个简单的接口。这个接口使得子系统更容易使用,降低了客户端代码与子系统之间的耦合。在大型项目中,外观模式常用于封装多个子系统的交互,使客户端只需与一个...

    实验3:结构型模式应用实验(2)源码

    通过对这些代码的研究和理解,你将能更好地掌握如何在Java开发中有效地利用结构型模式,提高代码的可读性和可维护性。 在实验过程中,你需要分析每个模式的实现,理解其工作原理,并尝试修改或扩展代码,以加深对...

    设计模式之适配器模式与外观模式demo

    外观模式(Facade Pattern)则旨在为复杂的子系统提供一个简单的接口,客户端可以通过这个接口与子系统进行交互,而无需了解子系统的内部结构。外观模式简化了客户端代码,隐藏了子系统的复杂性,降低了系统的耦合度...

    C#面向对象设计模式纵横谈(25):设计模式总结

    10. 外观模式:外观模式为复杂的子系统提供了一个简单的接口,简化了客户端代码。 11. 享元模式:享元模式通过共享技术有效地支持大量细粒度的对象,减少内存消耗。 12. 代理模式:代理模式为其他对象提供一种代理...

Global site tag (gtag.js) - Google Analytics