.NET 브리지 모드 설명

5138 단어 .NET브리지 모드
브리지 모드 정의:
추상 화(Abstraction)와 실현 화(Implementation)를 결합 시 켜 양자 가 독립 적 으로 변화 할 수 있 도록 한다.
브리지 모드 구성 도:

브리지 모드 에서 의 역할:
추상 화(Abstraction)역할:추상 화 된 정의 와 실현 대상 에 대한 인용 을 저장 합 니 다.
추상 화(Refined Abstraction)캐릭터 수정:추상 화 된 캐릭터 를 확장 하고 부모 클래스 가 추상 화 에 대한 정 의 를 바 꾸 고 수정 합 니 다.
실현 화(Implementor)역할:이 역할 은 실현 화 된 캐릭터 의 인 터 페 이 스 를 제공 하지만 구체 적 인 실현 을 제시 하지 않 습 니 다.반드시 지적 해 야 할 것 은 이 인 터 페 이 스 는 반드시 추상 화 된 캐릭터 의 인터페이스 정의 와 같 지 않 고 실제로 이 두 인 터 페 이 스 는 매우 다 를 수 있다 는 것 이다.실현 화 된 역할 은 바 텀 조작 만 해 야 하고 추상 화 된 역할 은 바 텀 조작 을 바탕 으로 하 는 더욱 높 은 조작 만 해 야 한다.
인 스 턴 스 설명 결합:
텔레비전 리모컨 의 예 를 인용 하여 모든 브랜드 의 리모컨 에 대해 서로 호응 하 는 리모컨 으로 제어 할 수 있다.이때 우리 가 생각 하 는 설정 은 추상 적 인 리모컨 인터페이스,그 안에 실현 해 야 할 켜 기,끄 기,채널 바 꾸 기 등 기능 방법 일 수 있다.그리고 구체 적 인 리모컨 류 를 만들어 이 인 터 페 이 스 를 계승 하여 안의 방법 을 실현 한다.이렇게 하면 모든 텔레비전 이 자신의 리모컨 을 실현 하 는 것 을 만족 시 킬 수 있다.다른 유형의 텔레비전 을 새로 추 가 했 을 때 파생 류 만 추가 하면 새로운 리모컨 의 파생 을 만족 시 킬 수 있다.그러나 어느 날 에 사용자 가 리모컨 에 이전 채널 로 돌아 가 는 기능 을 추가 하 라 고 요구 할 때 추상 적 인 리모컨 인 터 페 이 스 를 바 꾸 고 추상 류 에 새로운 방법 을 추가 해 야 추상 류 의 실현 을 바 꾸 었 다.만약 에 사용자 가 텔레비전의 제품 행위 와 리모컨 의 행위 방법 을 동시에 바 꾸 라 고 요구 하면 위의 디자인 에 큰 변화 가 생 길 것 이다.브리지 모드 를 사용 하면 이 문제 들 을 잘 해결 할 수 있다.
사용:
1.먼저 텔레비전 을 추상 화하 고 리모컨 이 바 뀌 는 행위 방법 을 제공한다.

 /// <summary>
 ///    ,      
 /// </summary>
 public abstract class TV
 {
  public abstract void On();
  public abstract void Off();
  public abstract void tuneChannel();
 }
2.구체 적 인 텔레비전 을 만 들 고 추상 적 인 텔레비전 류 를 계승 한다.

 /// <summary>
 ///       ,         
 /// </summary>
 public class Samsung:TV
 {
  public override void On()
  {
   Console.WriteLine("           ");
  }

  public override void Off()
  {
   Console.WriteLine("           ");
  }

  public override void tuneChannel()
  {
   Console.WriteLine("         ");
  }
 }

 /// <summary>
 ///       ,         
 ///        
 /// </summary>
 public class ChangHong : TV
 {
  public override void On()
  {
   Console.WriteLine("           ");
  }

  public override void Off()
  {
   Console.WriteLine("           ");
  }

  public override void tuneChannel()
  {
   Console.WriteLine("         ");
  }
 }

3.그리고 개관 중의 리모컨 을 추상 화하 고 추상 적 인 역할 을 한다.

 /// <summary>
 ///          ,       
 /// </summary>
 public abstract class RemoteControl
 {
  public TV implementor { get; set; }

  /// <summary>
  ///     
  ///              ,           
  /// </summary>
  public virtual void On()
  {
   implementor.On();
  }

  /// <summary>
  ///     
  /// </summary>
  public virtual void Off()
  {
   implementor.Off();
  }

  /// <summary>
  ///    
  /// </summary>
  public virtual void SetChannel()
  {
   implementor.tuneChannel();
  }
 }

4.구체 적 인 리모컨 종 류 를 만 듭 니 다.이 안에 채널 을 바 꾸 는 방법 을 다시 썼 습 니 다.사실은 다른 방법 도 다시 쓸 수 있 습 니 다.

 /// <summary>
 ///       
 /// </summary>
 public class ConcreteRemote:RemoteControl
 {
  /// <summary>
  ///         
  /// </summary>
  public override void SetChannel()
  {
   Console.WriteLine("        ");
   base.SetChannel();
  }
 }
5.호출:

static void Main(string[] args)
  {
   //        
   RemoteControl remoteControl = new ConcreteRemote();
   
   //     
   remoteControl.implementor = new ChangHong();
   remoteControl.On();
   remoteControl.SetChannel();
   remoteControl.Off();
   Console.WriteLine();

   //       
   remoteControl.implementor = new Samsung();
   remoteControl.On();
   remoteControl.SetChannel();
   remoteControl.Off();
   Console.Read();
  }

이렇게 연결 하여 브리지 모델 의 디자인 을 실현 했다.리모컨 의 기능 실현 방법 은 리모컨 에서 이 루어 진 것 이 아니 라 실현 부분 을 다른 텔레비전 류 로 포장 하 는 것 이다.리모컨 에는 텔레비전 류 의 인용 만 포함 되 어 있다.브리지 모델 을 통 해 우 리 는 이미지 추출 과 실현 화 부분 을 분리 시 켜 이 두 가지 변화 에 잘 대응 할 수 있다.
장점:
추상 적 인 인 인 터 페 이 스 는 디 결합 을 실현 하 는 것 과 기한 중의 추상 과 실현 은 독립 적 으로 확장 할 수 있 고 상대방 에 게 영향 을 주지 않 습 니 다.
단점:
시스템 의 복잡 도 를 증가 시 켰 다.
사용 필드:
1.만약 에 한 시스템 이 구조 재 의 추상 화 된 역할 과 구체 화 된 역할 사이 에 더 많은 유연성 을 추가 하고 두 차원 에서 정태 적 인 관 계 를 구축 하지 않도록 해 야 한다.
2.디자인 요구 실현 화 캐릭터 의 그 어떠한 변화 도 클 라 이언 트 에 영향 을 주지 않 거나 실현 화 캐릭터 의 변 화 는 클 라 이언 트 에 게 완전히 투명 하 다.
3.여러 플랫폼 을 뛰 어 넘 는 그래 픽 과 창 시스템 에서
4.한 가지 유형 은 두 개의 독립 적 인 변화 차원 이 존재 하고 두 가지 차원 이 모두 확장 되 어야 한다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기