目录
0、定义
1、桥接模式的四种角色
2、桥接模式的UML类图
3、示例代码
0、定义
将抽象部门与实现部分分离,使它们都可以独立地变化。
1、桥接模式的四种角色
- 抽象(Abstraction):一个抽象类,包含实现者(Implementor)声明的变量。
- 实现者(Implementor):实现者角色是一个接口(抽象类),该接口(抽象类)中的方法不一定与Abstraction类中的方法一致。Implementor接口(抽象类)负责定义基本操作,而Abstraction类负责定义基于这些操作的较高层次的操作。
- 细化抽象(Refined Abstraction):细化抽象是抽象角色的一个子类,该子类在重写(覆盖)抽象角色中的方法时,在给出一些必要的操作后,将委托Implementor类型对象调用相应的方法。
- 具体实现者(Concrete Implementor):具体实现者是实现(拓展)Implementor接口(抽象类)的类
2、桥接模式的UML类图
3、示例代码
实现者(对修改关闭)
package xyz.jangle.design.bridge;public interface Implementor {public void operationImp();}
抽象(对修改关闭)
package xyz.jangle.design.bridge;public abstract class Abstraction {Implementor impl;public Abstraction(Implementor impl) {super();this.impl = impl;}public abstract void operation();}
细化抽象(对拓展开放,可以实现多个细化抽象)
package xyz.jangle.design.bridge;public class RefinedAbstraction extends Abstraction {public RefinedAbstraction(Implementor impl) {super(impl);}@Overridepublic void operation() {impl.operationImp(); //重要实现部分由Implementor的子类的operationImp()方法负责。}}
具体实现者1(对拓展开放,可以新增具体实现者。)
package xyz.jangle.design.bridge;public class ConcreteImplementor1 implements Implementor {@Overridepublic void operationImp() {System.out.println("to do something 1 ");}}
具体实现者2
package xyz.jangle.design.bridge;public class ConcreteImplementor2 implements Implementor {@Overridepublic void operationImp() {System.out.println("to do something 2 ");}}
客户端(使用)
package xyz.jangle.design.bridge;public class AppMain19 {public static void main(String[] args) {ConcreteImplementor1 implementor1 = new ConcreteImplementor1();RefinedAbstraction refined = new RefinedAbstraction(implementor1);refined.operation();ConcreteImplementor2 implementor2 = new ConcreteImplementor2();RefinedAbstraction refined2 = new RefinedAbstraction(implementor2);refined2.operation();}}
输出结果:
to do something 1
to do something 2