-
구조패턴 : Facade 패턴디자인패턴 2013. 1. 29. 09:30
분류 : 구조패턴(Structural Patterns)
정의 :
클래스 라이브러리 같은 큰 몸집의 코드에 대한 단순화된 인터페이스를 제공하는 패턴
용도 :
- 소프트웨어 라이브러리를 사용, 이해, 테스트하기 쉽게 만듬.
- 라이브러리의 가독성을 증가시킴
- 외부코드의 라이브러리에 대한 의존성을 감소시킴. 시스템 개발할때 유연성을 더해줌.
- 잘 작성되지 않은 API들을 하나의 잘 정리된 API로 포장해줌.
소스
//컴퓨터 부품 public class CPU { public void freeze() { System.out.println("cpu freeze."); } public void jump(long position) { System.out.println("cpu jump."); } public void execute() { System.out.println("cpu execute."); } } //컴퓨터 부품 public class Memory { public void load(long position, byte[] data) { System.out.println("memory load"); } } //컴퓨터 부품 public class HardDrive { public byte[] read(long lba, int size) { byte[] data = null; System.out.println("HardDrive read."); return data; } } //Facade(퍼사드) public class Computer { private CPU cpu; private Memory memory; private HardDrive hardDrive; public Computer() { this.cpu = new CPU(); this.memory = new Memory(); this.hardDrive = new HardDrive(); } public void startComputer() { //의미없이 테스트 용도로 선언한 변수들 long BOOT_ADDRESS = 1024; long BOOT_SECTOR = 1024; int SECTOR_SIZE = 10; cpu.freeze(); memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE)); cpu.jump(BOOT_ADDRESS); cpu.execute(); } } //클라이언트 public class You { public static void main(String[] args) { Computer facade = new Computer(); facade.startComputer(); } }
참고자료
http://en.wikipedia.org/wiki/Facade_pattern
http://ko.wikipedia.org/wiki/%ED%8D%BC%EC%82%AC%EB%93%9C_%ED%8C%A8%ED%84%B4
'디자인패턴' 카테고리의 다른 글
구조패턴 : Proxy 패턴 (0) 2013.02.06 구조패턴 : Flyweight 패턴 (0) 2013.02.05 구조패턴 : Decorator 패턴 (0) 2013.01.28 구조패턴 : Composite 패턴 (0) 2013.01.25 구조패턴 : Bridge 패턴 (0) 2013.01.23 댓글