Bridge Pattern

 - 기능과 구현을 분리하는 패턴. 

 - 기능과 구현을 별도의 클래스로 정의하여 서로 분리하는 방법

 1. 계층 구조를 완만하게 만드는 효과

 2. 구현을 사용자로부터 완벽하게 숨김

 상속을 완만하게 만든다.


  1. interface IMp3 {
  2.         void play();
  3.  
  4.         void stop();
  5. }
  6.  
  7. class IPod implements IMp3 {
  8.  
  9.         @Override
  10.         public void play() {
  11.                 System.out.println("play ipod");
  12.         }
  13.  
  14.         @Override
  15.         public void stop() {
  16.                 System.out.println("stop ipod");
  17.  
  18.         }
  19.  
  20. }
  21.  
  22. // 사용자가 imp3 를 직접 사용하게 하지말고 중간층을 도입.
  23. // 내부적으로 imp3를 사용.
  24. // 내부의 구현을 사용자로부터 완벽하게 숨긴다.
  25. // 기능과 구현을 구분한다.
  26. class Mp3 {
  27.         IMp3 mp3;
  28.  
  29.         public Mp3(IMp3 mp3) {
  30.                 this.mp3 = mp3;
  31.         }
  32.  
  33.         void play() {
  34.                 mp3.play();
  35.         }
  36.  
  37.         void stop() {
  38.                 mp3.stop();
  39.         }
  40.  
  41.         // 1분간 플레이 요구사항 발생
  42.         public void playOneMinute() {
  43.                 // 1분
  44.                 mp3.play();
  45.         }
  46. }
  47.  
  48. class People {
  49.         public void useMp3(Mp3 mp3) {
  50.                 mp3.play();
  51.         }
  52.  
  53. }
  54.  
  55. public class Ex1 {
  56.         public static void main(String... args) {
  57.                 People p = new People();
  58.                 Mp3 mp3 = new Mp3(new IPod());
  59.                 p.useMp3(mp3);
  60.         }
  61.  
  62. }


'java > design_pattern' 카테고리의 다른 글

Java Design Pattern 총 정리  (0) 2014.07.01
Facade Pattern - 퍼사드 패턴  (0) 2014.07.01
Memento Pattern - 메멘토 패턴  (0) 2014.07.01
Command Pattern - 명령패턴  (0) 2014.07.01
Proxy Pattern - 대리자 패턴  (0) 2014.07.01

+ Recent posts