C\#디자인 모델 시리즈 튜 토리 얼-브리지 모드
추상 적 인 부분(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 브리지 모델 의 유형 도
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 층 구조
판독: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 만약 에 계승 실현 방안 을 사용 하면 여러 가지 하위 유형 이 발생 할 수 있 고 그 어떠한 변화 요소 도 여러 가지 유형 을 만들어 완성 해 야 하 므 로 브리지 모델 을 고려 해 야 한다.
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.