설명
클래스들이 복잡하게 엉켜있으면 그냥 하나의 클래스로 묶어 버리는 것.
사용자 코드와 구현 코드간의 결합도가 약해져 구현이 자유로워짐.
나아가 컴파일 의존성을 줄여줌,
이때 굳이 구현코드, 서브시스템의 접근을 막을 필요는 없음.
예제 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Compiler { public: Compiler(); virtual void Compile(istream&, BytecodeStream&) { Scanner scanner(input); ProgramNodeBuilder builder; Parser parser; parser.Parse(scanner, builder); RISSCodeGenerator generator(output); ProgramNode* parseTree = buiilder.GetRootNode(); parseTree->Traverse(generator); } }; | cs |
Compiler 안에 Scanner, ProgramNodeBuilder, Parser 등 온갖게 다 있지만,
메소드 하나에 다 박아 넣어서 사용자는 서브 시스템을 몰라도 되게 함.
추가 설명
...
댓글 없음:
댓글 쓰기