ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구조패턴 : 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

    댓글

Designed by Tistory.