디자인 모드 - 브리지 모드 (BRIDGE)
4993 단어 디자인 모드
추상 적 인 부분 과 그 실현 부분 을 분리 하여 독립 적 으로 변화 시 킬 수 있다.
2. 별명
Handle / Body
3. 동기
하나의 추상 이 여러 가지 실현 이 가능 할 때 보통 계승 으로 그들 을 조율 한다.추상 류 는 이 추상 적 인 인터페이스 에 대해 정 의 를 내 렸 고 구체 적 인 자 류 는 서로 다른 방식 으로 이 루어 졌 다.그러나 이 방법 은 때때로 융통성 이 부족 하 다.계승 체 제 는 추상 적 인 부분 과 그의 실현 부분 을 고정 시 켜 추상 적 인 부분 과 실현 부분 을 독립 적 으로 수정 하고 확대 하 며 재 활용 하기 어렵다.
4. 적용 성
1) 추상 과 그 실현 부분 사이 에 고정된 연결 관 계 를 가지 고 싶 지 않다.예 를 들 어 이 경우 프로그램 이 실 행 될 때 일부 가 선택 되 거나 전환 되 기 때 문 일 수 있 습 니 다.
2) 유형의 추상 과 실현 은 모두 자 류 를 생 성 하 는 방법 을 통 해 확대 할 수 있다.
5. 구조
6. 코드 예시
개인 적 으로 Bridge 모델 은 매우 간단 하면 서도 OO 의 정 수 를 잘 나타 내 는 디자인 모델 이 라 고 생각 합 니 다.이른바 디자인 중의 '상속 보 다 는 취 합 을 사용 하 라' 는 것 은 대부분 Bridge 모드 로 문 제 를 해결 할 수 있다.
다음 장면 을 고려 하면 추상 적 인 기본 클래스 인 AbstractCar, 하위 SUV, Car (승용차), 트럭 (Truck), 그리고 뒷바퀴 구동 과 4 구, 디 젤 차, 가솔린 차, 하 이브 리드, 순수 전기, 배 기량 (1.6, 2.0, 2.4) 이 있 는데 계승 실현 방식 에 따라 몇 가지 유형 이 있어 야 합 니까?조합 하면 몇 십 가지 예요.
class Program
{
static void Main(string[] args)
{
}
}
abstract class AbstractCar
{
public abstract void Go();
public abstract void FuelCharging();
}
abstract class SUV : AbstractCar
{
}
abstract class DieselEngineSUV : SUV
{
}
abstract class GasolineEngineSUV : SUV
{
}
class DieselEngineSUV_20 : DieselEngineSUV
{
public override void Go()
{
Console.WriteLine("A 2.0 diesel engine SUV is on the road");
}
public override void FuelCharging()
{
Console.WriteLine("Add diesel oil to the SUV");
}
}
class GasolineEngineSUV_16T : GasolineEngineSUV
{
public override void Go()
{
Console.WriteLine("A 1.6T gasoline engine SUV is on the road");
}
public override void FuelCharging()
{
Console.WriteLine("Add 93 gasoline to the SUV");
}
}
이른바 폭발 이다.
Bridge 모드 는 추상 적 인 부분 과 그의 실현 부분 을 분리 시 킬 수 있다. 위의 예 에서 추상 적 인 부분 은 엔진 유형, 배 기량, 소형 승용차 또는 SUV 를 말 하 는데 실현 부분 은 바로 차 자체 이다.
class Program
{
static void Main(string[] args)
{
AbstractCar suv = new SUV();
suv.engine = new GasolineEngine();
suv.fuelCharge = new FuelCharging();
suv.Run();
}
}
abstract class AbstractCar
{
public Engine engine { get; set; }
public IFuelChargingImp fuelCharge { get; set; }
public abstract void Run();
public abstract void FuelCharging();
}
abstract class Engine
{
public string EnergyType { get; set; }
public string Volume { get; set; }
public abstract void Run();
}
class GasolineEngine : Engine
{
public override void Run()
{
}
}
class FuelCharging : IFuelChargingImp
{
public void Charge()
{
Console.WriteLine("charge with #93 oil");
}
}
class DieselCharging : IFuelChargingImp
{
public void Charge()
{
Console.WriteLine("charge with diesel oil");
}
}
interface IFuelChargingImp
{
void Charge();
}
class SUV : AbstractCar
{
public override void Run()
{
engine.Run();
}
public override void FuelCharging()
{
fuelCharge.Charge();
}
}
위의 이 예 는 비교적 간단하게 쓰 였 으 나, 기본적으로 Bridge 모델 의 특징 을 나 타 낼 수 있다.
7. 깊이 생각 하기
Bridge 모드 구 조 는 간단 하지만 잘 쓰 기 는 쉽 지 않다.
1) 잠재 적 이거 나 실제 적 인 변화 가 발생 하고 이러한 수량 이 증가 할 수 있 을 때 우 리 는 도대체 무엇이 변화 하고 있 는 지 명확 하 게 해 야 한다. 이 변화의 점 을 정리 하 는 것 은 OO 의 핵심 이다. 만약 에 이 변화의 점 에 대해 깊이 이해 하지 못 하거나 이 변화 점 을 잘못 정의 하면 일련의 문 제 를 초래 할 것 이다.복잡 한 장면 에서 '추상 적 인 부분' 은 흔히 하나 가 아니다. 이 럴 때 여러 개의 Bridge 를 동시에 사용 할 수 있 음 을 암시 한다.
위의 차 를 예 로 들 면 변화의 점 은 '엔진 유형' 일 수도 있 고 '동력 을 어떻게 제공 하 는가' 라 고 이해 할 수도 있다. 만약 에 변화의 점 이 엔진 유형 이 라 고 정의 한다 면 추상 적 인 엔진 류 에 실현 을 더 하 는 것 이다. 만약 에 '동력 을 어떻게 제공 하 는가' 라면 '동력' 을 정의 할 것 이다.인 터 페 이 스 는 서로 다른 엔진 류 를 정의 하여 이 인 터 페 이 스 를 실현 합 니 다. 이 호출 자 자동차 에 대해 서 는 다 를 것 입 니 다. 관심 사 는 행동 만 하 느 냐, 아니면 더욱 복잡 한 표현 이 필요 하 느 냐 에 달 려 있 습 니 다.
2) Implementor 의 생 성 을 고려 합 니 다. Implementor 는 추상 적 인 부분 이 고 읽 기와 쓰기 가 가능 한 집합 으로 정의 할 수 있 기 때문에 IOC 의 능력 을 제공 합 니 다. Implementor 의 생 성 은 세 가지 가 있 습 니 다.
a) Abstraction 은 모든 Concrete Implementor 를 알 고 있 으 며, 일부 매개 변 수 를 통 해 어떤 종 류 를 만 들 지 결정 합 니 다.
b) 기본 구현 을 제공 하고 필요 할 때 전환 합 니 다.
c) 대상 의 창설 을 다른 종류 에 대리 하여 단순 공장 또는 추상 공장 을 통 해 실현 할 수 있다
3) Bridge 모드 에서 제공 하 는 동적 전환 능력
Bridge 모드 에서 취 합 이 생 겼 기 때문에 이 취 합 이 읽 기와 쓰기 가 가능 하 다 면 실행 시 동적 전환 이 가능 한 능력 을 제공 합 니 다.
8. 다른 모델 과 의 관계
Bridge 모델 과 Strategy 모델 의 유형 도 는 같다. Bridge 모델 은 구조 적 모델 로 대상 의 직접적인 관계 에 주목 하고 Strategy 는 행위 형 모델 로 행위 의 교체 가능성 에 주목한다.
Bridge 는 보통 간단 한 공장 이나 추상 적 인 공장 으로 만든다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.