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

十、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的存在。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值