一、定义
将抽象部分与实现部分分离脱耦,使它们都可以独立的变化;脱耦方式就是将抽象和实例的继承关系改为组合或聚合关系,将强关联改为弱关联。
二、要素
1.抽象化角色
2.修正抽象化角色
3.实现化角色
4.具体实例化角色
三、代码实例
//抽象化角色
public abstract class Abstraction {
private Implementor mImpl; public Abstraction(Implementor impl){ this.mImpl = impl; } public void doSomething(){ this.mImpl.doSomething(); } }//修正抽象角色
public class RefineAbstraction extends Abstraction{
public RefineAbstraction(Implementor impl) {
super(impl); }}
//实例化角色
public abstract class Implementor {
public abstract void doSomething(); }//具体实例化角色
public class ConcreteImplementor extends Implementor{
@Override
public void doSomething() { System.out.print("doSomething"); }}
//客户端
public class Client {
public static void main(String[] args) { ConcreteImplementor impl = new ConcreteImplementor(); Abstraction refineAbstraction = new RefineAbstraction(impl); refineAbstraction.doSomething(); } }四、说明
1.上面的实例是将抽象化角色和实例化角色之间的继承关系,改为聚合关系,这样实现就不在受抽象的影响;
2.不是遇到继承就使用桥接模式,该模式的意图还是对变化的封装,当抽象不稳定时,考虑使用该模式;