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




头文件
//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();
}

运行结果

猜你喜欢

转载自jacky-dai.iteye.com/blog/2299576