Design patterns
브릿지 패턴
수색…
자바에서 브릿지 패턴 구현
브릿지 패턴은 추상화를 구현과 분리하여 둘 다 독립적으로 변할 수 있도록합니다. 그것은 상속이 아니라 구성으로 성취되었습니다.
위키 백과의 UML 다이어그램 :
이 패턴에는 네 가지 구성 요소가 있습니다.
Abstraction
: 인터페이스를 정의합니다.
RefinedAbstraction
: 추상화를 구현합니다.
Implementor
: Implementor
위한 인터페이스를 정의합니다.
ConcreteImplementor
: 구현 자 인터페이스를 구현합니다.
The crux of Bridge pattern :
컴포지션을 사용하는 두 개의 직교 클래스 계층 구조 (상속 없음). 추상화 계층 구조 및 구현 계층 구조는 독립적으로 다를 수 있습니다. 구현은 추상화를 절대로 언급하지 않습니다. 추상화는 구성원 (구현을 통해)으로 구현 인터페이스를 포함합니다. 이 구성은 한 가지 수준의 상속 계층 구조를 줄입니다.
실제 단어 사용 사례 :
수동 및 자동 기어 시스템의 두 가지 버전을 갖도록 다른 차량을 사용하십시오.
예제 코드 :
/* Implementor interface*/
interface Gear{
void handleGear();
}
/* Concrete Implementor - 1 */
class ManualGear implements Gear{
public void handleGear(){
System.out.println("Manual gear");
}
}
/* Concrete Implementor - 2 */
class AutoGear implements Gear{
public void handleGear(){
System.out.println("Auto gear");
}
}
/* Abstraction (abstract class) */
abstract class Vehicle {
Gear gear;
public Vehicle(Gear gear){
this.gear = gear;
}
abstract void addGear();
}
/* RefinedAbstraction - 1*/
class Car extends Vehicle{
public Car(Gear gear){
super(gear);
// initialize various other Car components to make the car
}
public void addGear(){
System.out.print("Car handles ");
gear.handleGear();
}
}
/* RefinedAbstraction - 2 */
class Truck extends Vehicle{
public Truck(Gear gear){
super(gear);
// initialize various other Truck components to make the car
}
public void addGear(){
System.out.print("Truck handles " );
gear.handleGear();
}
}
/* Client program */
public class BridgeDemo {
public static void main(String args[]){
Gear gear = new ManualGear();
Vehicle vehicle = new Car(gear);
vehicle.addGear();
gear = new AutoGear();
vehicle = new Car(gear);
vehicle.addGear();
gear = new ManualGear();
vehicle = new Truck(gear);
vehicle.addGear();
gear = new AutoGear();
vehicle = new Truck(gear);
vehicle.addGear();
}
}
산출:
Car handles Manual gear
Car handles Auto gear
Truck handles Manual gear
Truck handles Auto gear
설명:
-
Vehicle
은 추상화입니다. -
Car
와Truck
은Vehicle
두 가지 구체적인 구현물입니다. -
Vehicle
는 추상 메소드addGear()
정의합니다. -
Gear
는 구현 자 인터페이스입니다. -
ManualGear
및AutoGear
는Gear
두 가지 구현입니다. -
Vehicle
에는 인터페이스를 구현하는 대신implementor
인터페이스가 포함되어 있습니다.Compositon
구현 인터페이스의이 패턴의 핵심이다은 독립적으로 변화시키는 추상화와 구현을 허용한다. -
Car
와Truck
은 추상화를위한 구현 (재정의 된 추상화)을 정의합니다 :addGear()
:Gear
-Manual
또는Auto
브리지 패턴의 경우 사용 사례 :
- 추상화 와 구현 은 서로 독립적으로 바뀔 수 있으며 컴파일 타임에 바인딩되지 않습니다.
- 직교 계층 구조 매핑 - 추상화 및 구현을 위한 계층 구조입니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow