프로그램 아키텍쳐/디자인패턴

브릿지 패턴 ( Bridge Pattern )

본클라쓰 2009. 10. 30. 16:31

 

 브릿지 패턴은 변경되는 요구 사항에 클래스의 확장을 하지 않고 쉽게 해결하는 방법을 제공한다. 패턴에 대한 설명은 추상화 개념과 구현을 분리시켜 독립적으로 변화할 수 있도록 파생 클래스의 폭발적인 증가 없이 다양한 구현이 필요한 경우 사용하는 패턴이라고 나온다.


이 말은 간단하게 설명해서 객체에서 변화되는 부분을 따로 관리하는 것을 말한다.

 

 사람이라는 추상화된 객체가 있다면 벽돌을 쌓는 일꾼과 치우는 일꾼을 만들고 싶다면 변화하는 구현을 작업이라는 인터페이스 구현을 통해 따로 정리하는 방법이다.

 









 

 


 

 

 

 

 

 우선 추상화된 객체가 해야할 부분을 분리하여 작업이라는 인터페이스를 작성한다. 
 

 

작업 인터페이스

public interface 작업 {


    public void 일하기();


}


벽돌쌓기 클래스

public class 벽돌쌓기 implements 작업 {


    public void 일하기() {

        벽돌을 쌓습니다.

    }

}


치우기 클래스

public class 치우기 implements 작업 {


    public void 일하기() {

        현장을 치웁니다.

    }

}




인터페이스 사람 클래스

public interface 사람 {


    public void 일하기() ;

}



일꾼 클래스

public class 일꾼 implements 사람 {


    private 작업;


    public 일꾼(작업) {

        this.작업 = 작업;

    }


    public 일하기() {

        작업.일하기();

    }

}




실제 사용 코드

main {

    // 벽돌쌓은 일꾼을 만들어서 벽돌을 쌓습니다.

    벽돌쌓기 객체1 = new 벽돌쌓기();

    일꾼 일꾼객체1 = new 일꾼( 객체1 );

    일꾼객체1.일하기();


    // 치우는 일꾼을 만들어서 현장을 치웁니다.

    치우기 객체2 = new 치우기();

    일꾼 일꾼객체2 = new 일꾼( 객체2 );

    일꾼객체2.일하기();

}