이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!