Latest web development tutorials

브리지 모드

두 독립적으로 변화 할 수 있도록 브리지 (다리), 디커플링 및 추상화를 달성하기 위해 사용된다. 디자인 패턴이 종류의 구조의 추상화를 제공 디커플링을 달성하기 위해 둘 사이 브리징 구조 모델에 속한다.

이 모델 함수 인터페이스 클래스 유형의 엔티티 독립적있게 가교 인터페이스로 포함한다. 클래스의 두 가지 유형 변화와 서로 영향을하도록 구성 될 수있다.

다음의 예에 의해 우리는 브리지 모드 (브리지 패턴) 사용법을 설명합니다. 어떤 동일한 방법을 사용할 수 있지만 구현 클래스를 브리징 다른 추상 클래스는 서로 다른 색의 원을 그립니다.

소개

의도 : 분리의 일부의 추상화 및 구현, 그들은 독립적으로 변화 할 수 있도록.

주요 솔루션 : 변경 될 수 있습니다 다양한 환경에서 클래스 상속이 폭발을 일으킬 수 있습니다, 그것은 유연한 확장이 아니다.

때 사용하는 방법 : 구현 분류 체계가 여러 각도를 가질 수있다, 각각의 각도가 변경 될 수 있습니다.

어떻게 해결하는 방법이 멀티 앵글 분류 구분, 그래서 그들은 변화와 무관 한 듯 그들 사이의 커플 링을 줄일 수 있습니다.

키 코드 : 추상 클래스 구현에 의존 클래스입니다.

적용 예 : 실현 가능한 동일하다 영혼과 몸, 추상화 전 대응 : 1, 돼지 원수 캐노피 환생에 돼지에서 다시 태어나는 세상기구의 환생은 두 가지 수준, 즉으로 나뉘어져 있습니다.위임 기능, 함수 호출 물리적 객체에 의해 생물 등 생물 동적으로 선택할 수 있습니다. 2, 벽에 스위치, 당신은 스위치를 달성하는 방법 내부 추상이 아닌 콘크리트 파이프입니다 볼 수 있습니다.

장점 : 1, 추상과 분리를 얻을 수 있습니다.2, 우수한 확장 성을 제공합니다. 도 3을 참조하면, 구현은 클라이언트에 투명 사항.

단점 : 브리지 모드의 도입은 추상적 디자인 및 프로그래밍 현상을 필요로 이해하는 시스템 추상화 계층 기반 중합 관계 설계의 어려움을 증가시킬 것이다.

사용 시나리오 1, 시스템은 그들 계층 추상화하도록 브리지 모드를 통해 상기 두 레벨 간의 고정 상속의 링크를 생성하는 것을 피하기 위해 더 많은 유연성을 추가 추상화와 롤의 구체적 역할 부재 사이에 필요한 경우 관계를 설정합니다.도 2는 시스템 클래스의 수가 급격히 증가되었다 다단계 상속 또는 유산으로 시스템을 사용하지 않는 사람들을위한 브리지 모드에 특히 적용 가능하다. (3)는 변화의 두 개의 독립적 인 측정 기준이 두 기준이되는 클래스를 확장 할 필요가있다.

주 : 두 개의 독립적 인 측정 기준의변화를 수행하기 쉬운 브릿지 모드를 사용.

실현

우리는DrawAPI 인터페이스다리와 구현DrawAPI인터페이스 개체 클래스RedCircle,GreenCircle으로합니다.모양은추상 클래스, 이용DrawAPI 개체입니다.BridgePatternDemo, 우리의 데모 클래스는 서로 다른 색의원을그립니다Shape클래스를 사용합니다.

브리지 모드 UML 다이어그램

1 단계

인터페이스를 구현하는 다리를 만듭니다.

DrawAPI.java

공용 인터페이스 DrawAPI {
   공공 무효 drawCircle (INT 반경 INT의 X, INT y를);
}

2 단계

인터페이스 클래스의DrawAPI 구현을브리징 구현 개체를 만듭니다.

RedCircle.java

공용 클래스 RedCircle는 DrawAPI을 {구현
   @Override
   공공 무효 drawCircle (INT 반경 INT의 X, INT y를) {
      에서 System.out.println ( "드로잉 서클 [색상 : 빨강, 반경"
         + 반경 + "X :"+ X + ","+ Y + "]");
   }
}

GreenCircle.java

공용 클래스 GreenCircle는 DrawAPI을 {구현
   @Override
   공공 무효 drawCircle (INT 반경 INT의 X, INT y를) {
      에서 System.out.println ( "드로잉 서클 [색상 : 녹색, 반경"
         + 반경 + "X :"+ X + ","+ Y + "]");
   }
}

3 단계

DrawAPI는추상 클래스모양을만들 인터페이스를사용합니다.

Shape.java

공개 추상 클래스 모양 {
   DrawAPI drawAPI 보호;
   보호 된 모양 (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   공개 추상 무효 추첨 ();	
}

4 단계

만들기 엔티티클래스는 Shape인터페이스를 구현합니다.

Circle.java

공용 클래스 서클 모양을 {확장
   개인 INT X, Y, 반경;

   공공 원 (INT의 X, INT y를, INT 반경, DrawAPI drawAPI) {
      슈퍼 (drawAPI);
      this.x = X;  
      this.y = Y;  
      this.radius = 반경;
   }

   공공 무효 무승부 () {
      drawAPI.drawCircle (반지름, X, Y);
   }
}

5 단계

Shape클래스를 사용하고DrawAPI은서로 다른 색상의 원을 그립니다.

BridgePatternDemo.java

공용 클래스 BridgePatternDemo {
   공공 정적 무효 메인 (문자열 []에 args) {
      redCircle = 새로운 원형 모양 (100, 100, 10, 새로운 RedCircle ());
      greenCircle = 새로운 원형 모양 (100, 100, 10, 새로운 GreenCircle ());

      redCircle.draw ();
      greenCircle.draw ();
   }
}

6 단계

출력을 확인합니다.

원 그리기 [색상 : 빨강, 반경 : 10, X : 100, 100]
원 그리기 [색상 : 녹색, 반경 : 10, X : 100, 100]