>Java >java지도 시간 >Java의 브리지 패턴의 객체 구조 패턴 예

Java의 브리지 패턴의 객체 구조 패턴 예

黄舟
黄舟원래의
2017-09-11 10:53:101226검색

이 글은 주로 Java의 브리징 모드에 대한 관련 정보를 소개합니다 - 객체 구조 모드의 자세한 예를 통해 이 부분의 지식을 숙지할 수 있기를 바랍니다.

브리징 모드는 Java — — 객체 구조 패턴의 예에 대한 자세한 설명

1. Intent

추상적인 부분을 구현 부분과 분리하여 독립적으로 변경할 수 있습니다.

2. 적용 가능성

다음 상황 중 일부에서 브리지 패턴을 사용하세요.

추상화 부분과 구현 부분 사이에 고정된 바인딩 관계를 갖고 싶지 않습니다. 예를 들어, 프로그램이 실행되는 동안 구현의 일부를 선택하거나 전환할 수 있어야 하기 때문에 그럴 수 있습니다.

클래스의 추상화와 구현은 하위 클래스를 생성하여 확장 가능해야 합니다. 이때 브리지 패턴을 사용하면 서로 다른 추상 인터페이스와 구현 부분을 결합하고 각각 확장할 수 있습니다.

추상 구현 부분에 대한 수정은 고객에게 영향을 주어서는 안 됩니다. 즉, 고객 코드를 다시 컴파일할 필요가 없습니다.

(C++) 추상화의 구현 부분을 클라이언트로부터 완전히 숨기고 싶습니다. C++에서는 클래스 표현이 클래스 인터페이스에 표시됩니다.

3. 구조

4. 코드


public interface Implementor {
 /**
  * 实现抽象部分的具体方法
  */
 public void operationImpl();
}


public class ConcreteImplementorA implements Implementor {
 @Override
 public void operationImpl() {
  System.out.println("ConcreteImplementorA");
 }
}


public class ConcreteImplementorB implements Implementor {
 @Override
 public void operationImpl() {
  System.out.println("ConcreteImplementorB");
 }
}


public abstract class Abstraction {
 private Implementor mImplementor;

 /**
  * 通过实现部分对象的引用构造抽象部分的对象
  *
  * @param implementor 实现部分对象的引用
  */
 public Abstraction(Implementor implementor){
  mImplementor = implementor;
 }

 public void operation(){
  mImplementor.operationImpl();
 }
}


public class RefinedAbstraction extends Abstraction {

 /**
  * 通过实现部分对象的引用构造抽象部分的对象
  *
  * @param implementor 实现部分对象的引用
  */
 public RefinedAbstraction(Implementor implementor) {
  super(implementor);
 }

 public void refinedOperation(){
  //对 Abstraction中的方法进行扩展。

  System.out.println("refinedOperation");
  operation();
 }
}


public class Client {

 public static void main(String[] args){
  Abstraction abstraction = new RefinedAbstraction(new ConcreteImplementorA());
  abstraction.operation();
 }
}

위 내용은 Java의 브리지 패턴의 객체 구조 패턴 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.