--来自《设计模式:可复用面向对象软件的基础》
目的
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
Class Scanner
{
Public:
Scanner(istream&);
Virtual ~Scanner();
Virtual Token& Scan();
Private:
Istream& _inputStream;
};
Class Parser
{
Public:
Parser();
Virtual ~Parser();
Virtual void Parse(Scanner&, ProgramNodeBuilder&);
};
//外观
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);
};