java设计模式07(桥接模式)

桥接模式是一种对象结构型模式,它又被称为柄体模式或接口模式。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效地控制了系统中类的个数。

桥接模式中将两个独立变化的维度设计为两个独立的继承等级结构,在抽象层建立起一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式。

桥接模式的定义:将抽象部分与它的实现部分解耦,使得两者都能够独立变化。

桥接模式的结构与实现:
1.Abstraction(抽象类):用于定义抽象类的接口,通常是抽象类,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implementor之间具有关联关系,既可以包含抽象业务方法,也可以包含具体业务。

public abstract class Abstraction {
    
    public Implementor implementor;
    
    public void setImplementor(Implementor implementor) {
        this.implementor = implementor;
    }
    
    public abstract void operation();

}

2.Implementor(实现类接口):Implementor接口仅提供基本操作,而Abstraction定义的接口可能会做更多的复杂操作。Implementor接口对这些基本操作进行了声明,而具体实现交给其子类。通过关联关系,在Abstraction中不仅拥有自己的方法,还可以调用到Implementor中定义的方法,使用关联关系来替代继承关系。

public interface Implementor {

    public void operationImpl();
}

3.RefinedAbstraction(扩充抽象类):为具体实现类,实现了在Abstraction中声明的抽象业务方法,而且会取调用在Implementor中定义的业务方法。

public class RefinedAbstraction extends Abstraction {

    @Override
    public void operation() {
        //调用具体实现
        implementor.operationImpl();
    }

}

4.ConcreteImplementor(具体实现类):实现了Implementor接口,在不同的具体实现类中提供不同的实现,且提供给抽象类具体的业务操作方法。

public class ConcreteImplementor implements Implementor {

    @Override
    public void operationImpl() {
        System.out.println("桥接模式实现!");
    }

}

5.Test:

public class Test {

    public static void main(String[] args) {
        Implementor implementor=new ConcreteImplementor();
        RefinedAbstraction abstraction=new RefinedAbstraction();
        abstraction.setImplementor(implementor);
        abstraction.operation();
    }
}

你可能感兴趣的:(java设计模式07(桥接模式))