Patrón de diseño dieciséis, modo puente

Principio de reutilización de composición / agregación CAPR , intente usar composición / agregación, intente no usar herencia de clases

La agregación representa una relación de propiedad débil, que refleja que el objeto A puede contener el objeto B, pero el objeto B no es parte del objeto A; la composición es una relación de propiedad fuerte, que refleja la relación estricta entre la parte y el todo , parte y El ciclo de vida general es el mismo .

La ventaja del principio de reutilización de composición / agregación es que priorizar la composición / agregación de objetos lo ayudará a mantener cada clase encapsulada y concentrada en una sola tarea, de modo que la clase y la jerarquía de herencia de clases seguirá siendo pequeña y es poco probable que crezca en un gigante incontrolable .

El modo puente Bridge separa la parte abstracta de su parte de realización para que se puedan cambiar de forma independiente.

No es que la clase abstracta esté separada de sus clases derivadas, porque no tiene ningún sentido. La implementación se refiere a la clase abstracta y sus clases derivadas que se utilizan para implementar sus propios objetos.

//实现类
abstract public class Implementor {
    
    
    public abstract void Operation();
}

public class ConcreteImplementorA extends Implementor{
    
    
    @Override
    public void Operation() {
    
    
        System.out.println("具体实现A的执行方法");
    }
}

public class ConcreteImplementorB extends Implementor{
    
    
    @Override
    public void Operation() {
    
    
        System.out.println("具体实现B的执行方法");
    }
}

//抽象类
public class Abstraction {
    
    
    protected Implementor implementor;

    public void SetImplementor(Implementor implementor) {
    
    
        this.implementor = implementor;
    }

    public void Operation() {
    
    
        implementor.Operation();
    }
}

public class RefinedAbstraction extends Abstraction {
    
    
    @Override
    public void Operation() {
    
    
        super.Operation();
    }

    public static void main(String[] args) {
    
    
        Abstraction abstraction = new Abstraction();

        abstraction.SetImplementor(new ConcreteImplementorA());
        abstraction.Operation();

        abstraction.SetImplementor(new ConcreteImplementorB());
        abstraction.Operation();
    }
}


Producción:

具体实现A的执行方法
具体实现B的执行方法

Supongo que te gusta

Origin blog.csdn.net/weixin_45401129/article/details/114629520
Recomendado
Clasificación