C\#디자인 모델 시리즈 튜 토리 얼-브리지 모드

1.개술
추상 적 인 부분(Abstraction)과 실현 부분(Implementor)을 분리 하여 독립 적 으로 변화 시 킬 수 있 도록 합 니 다.
2.해결 하 는 문제
소프트웨어 시스템 에서 어떤 유형 은 자신의 논리 로 인해 두 개 이상 의 차원 의 변 화 를 가진다.이런 다 차원 변 화 를 해결 하기 위해 서 는 복잡 도 를 도입 하지 않 고 브 릿 지 모드 를 사용 해 야 한다.
3.모드 속 캐릭터
2.1 추상(Abstraction):추상 인 터 페 이 스 를 정의 합 니 다.이 인터페이스 에는 구체 적 인 행위,구체 적 인 특징 을 실현 하 는 Implementor 인터페이스 가 포함 되 어 있 습 니 다.
2.2 추출 된 추상(Refined Abstraction):Abstraction 에서 계승 한 자 류 는 여전히 추상 적 인 사물 명 이다.
2.3 실현(Implementor):구체 적 인 행위,구체 적 인 특징 을 정의 하 는 응용 인터페이스.
2.4 구체 적 실현(Concrete Implementor):Implementor 실현.
4.패턴 판독
4.1 실현 요점
Bridge 모드 는'대상 간 의 조합/집적 관계'를 사용 하여 추상 과 실현 간 의 고유 한 연결 관 계 를 결합 시 켜 추상 과 실현 이 각자 의 차원 에 따라 변화 할 수 있 도록 한다.
4.2 브리지 모델 의 유형 도
//img.jbzj.com/file_images/article/201606/2016060111102425.png
4.3 브리지 모델 의 실현 코드

 /// <summary>
 ///   
 /// </summary>
 public abstract class Implementor
 {
  public abstract void Opration();
 }

 public class ConcreteImplementorA : Implementor
 {
  public override void Opration()
  {
   Console.WriteLine("    A     。");
  }
 }

 public class ConcreteImplementorB : Implementor
 {
  public override void Opration()
  {
   Console.WriteLine("    B     。");
  }
 }

 /// <summary>
 ///   
 /// </summary>
 public abstract class Abstraction
 {
  protected Implementor implementor;

  public void SetImplementor(Implementor implementor)
  {
   this.implementor = implementor;
  }

  public abstract void Opration();
 }

 /// <summary>
 ///       
 /// </summary>
 public class RefinedAbstraction : Abstraction
 {
  public override void Opration()
  {
   implementor.Opration();
  }
 }

4.4 클 라 이언 트 호출

 class Program
 {
  static void Main(string[] args)
  {
   Abstraction abstraction = new RefinedAbstraction();

   abstraction.SetImplementor(new ConcreteImplementorA());
   abstraction.Opration();

   abstraction.SetImplementor(new ConcreteImplementorB());
   abstraction.Opration();

   Console.Read();
  }

 }
출력 결과:
구체 적 으로 A 를 실현 하 는 방법 집행.
구체 적 으로 B 를 실현 하 는 방법 집행.
5.브리지 모델 은 비교적 복잡 한 모델 이다.이 를 정리 하기 전에 모두 가 잘 아 는 응용:3 층 구조
//img.jbzj.com/file_images/article/201606/2016060111102426.png
판독:3 층 구조 중의 업무 논리 층(LogicalTierInterface)브리지 가 데이터 액세스 층(DatabaseTierInterface)에 연결 되 었 습 니 다.이 그림 과 위의 브리지 모델 의 그림 이 얼마나 일치 하 는 지 비교 해 보 세 요.여러분 은 데이터베이스 에서 이 단 계 를 방문 하여 확장 하 는 경우 가 많 습 니 다.예 를 들 어 현재 MySql 에 대한 지원 을 증가 합 니 다.새로운 실현 을 확장 하 는 것 이 아니 라 업무 논리 층 의 실현(LogicalImplement)에 만 내부 수정 을 하 는 경우 가 많다.만약 에 응용 프로그램 이 업무 논리 층 에 대한 확장(예 를 들 어 NewLogicalImplement)이 필요 하 다 면 이 3 층 구조 가 브리지 모델 에 대한 응용 은 비교적 완전한 것 이 라 고 할 수 있다.
6.모델 총화
6.1 장점
6.1.1 두 개 또는 여러 차원 을 따라 확장 할 때의 복잡 도 를 낮 추고 류 의 과도 한 팽창 을 방지한다.
6.1.2 두 개 또는 여러 차원 간 의 결합 을 해제 하여 그들 이 각자 의 방향 에 따라 변화 하고 서로 영향 을 주지 않도록 한다.
6.2 단점
미 발견
6.3 적용 필드
6.3.1 한 대상 이 여러 가지 변화 요소 가 있 을 때 브리지 모델 을 사용 하 는 것 을 고려 할 수 있다.이런 변화 요 소 를 추상 화하 여 구체 적 인 실현 에 의존 하 는 것 을 추상 에 의존 하 는 것 으로 수정 할 수 있다.
6.3.2 우리 가 한 대상 의 여러 변화 요소 가 동태 적 으로 변화 할 수 있 고 클 라 이언 트 의 프로그램 사용 에 영향 을 주지 않 기 를 기대 할 때.
6.3.3 만약 에 계승 실현 방안 을 사용 하면 여러 가지 하위 유형 이 발생 할 수 있 고 그 어떠한 변화 요소 도 여러 가지 유형 을 만들어 완성 해 야 하 므 로 브리지 모델 을 고려 해 야 한다.
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기