.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.한 가지 유형 은 두 개의 독립 적 인 변화 차원 이 존재 하고 두 가지 차원 이 모두 확장 되 어야 한다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 SQLite를 사용한 Windows Forms 앱 개발Visual Studio 2017에서 SQLite를 사용하여 Windows Forms 앱을 개발해 보았습니다. 아직 서버 탐색기나 TableAdaptor를 사용한 GUI에서의 개발에는 대응하지 않는 것 같습니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.