设计模式学习笔记(十一)——Facade外观

    技术2022-05-11  63

    十、Facade(外观)

    情景举例:

    为子系统中的一组接口提供一个一致的界面

    代码示例:

    /* 系统中各种类

    */

    class Scanner ;

    class Parser ;

    class ProgramNodeBuilder ;

    class ProgramNode ;

    class CodeGenerator ;

    class ExpressionNode : public ProgramNode ;

    class RISCCodeGenerator : public CodeGenerator ;

    /* 这是一个Façade类,它将上述的类集成在一起

    */

    class Compiler {

    public:

        Compiler();

     

        virtual void Compile(istream&, BytecodeStream&);

    };

    /*

    */

    void Compiler::Compile (

        istream& input, BytecodeStream& output

    ) {

        Scanner scanner(input);

        ProgramNodeBuilder builder;

        Parser parser;

     

        parser.Parse(scanner, builder);

     

        RISCCodeGenerator generator(output);

        ProgramNode* parseTree = builder.GetRootNode();

        parseTree->Traverse(generator);

    }

    个人理解:

    外观模式的理解相对简单,它提供了一个新类作为子系统的抽象。个人认为,可以理解为一个子系统的“门面”。它与子系统的通讯是单向的(与Mediator模式不同)它不定义新的功能,子系统也不知道Façade的存在。

     

    最新回复(0)