《Android源码设计模式》读书笔记 (24) 第24章 桥接模式

正文

  • 定义:将抽象部分与实现部分分离,使它们都可以独立地进行变化
  • 使用场景:
    如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,可以通过桥接模式使它们在抽象层建立一个关联关系.
  • 优点:分离抽象与实现\灵活的扩展以及对客户来说透明的实现等.

UML类图

这里写图片描述

  • Abstraction:抽象部分,该类保持一个对实现部分对象的引用,抽象部分中的方法需要调用实现部分的对象来实现,该类一般为抽象类.
/**
 * 抽象部分的实现
 * Created by max on 2016/4/13.
 */
public class Abstraction {
    private Implementor mImplementor;//声明一个私有成员变量引用实现部分的对象

    public Abstraction(Implementor mImplementor) {
        this.mImplementor = mImplementor;
    }

    /**
     * 通过调用实现部分具体的方法实现具体的功能
     */
    public void operation(){
        mImplementor.operatoinImpl();
    }
}
  • RefinedAbstraction:优化的抽象部分,抽象部分的具体实现,该类一般是对抽象部分的方法进行完善和扩展.
/**
 * 抽象部分的子类
 * Created by max on 2016/4/13.
 */
public class RefinedAbstraction extends Abstraction{

    public RefinedAbstraction(Implementor mImplementor) {
        super(mImplementor);
    }

    /**
     * 对父类抽象部分中的方法进行扩展
     */
    public void refinedOperation(){
        //对Abstraction中的方法进行扩展
    }
}
  • Implementor:实现部分.可以为接口或抽象类,其方法不一定要与抽象部分中的一致,一般情况下是由实现部分提供基本的操作,而抽象部分定义的规则是基于实现部分这些基本操作的业务方法
/**
 * 实现部分的抽象接口
 * Created by max on 2016/4/13.
 */
public interface Implementor {
    /**
     * 实现抽象部分的具体方法
     */
    public void operatoinImpl();
}
  • ConcreteImplementorA:实现部分的具体实现.完善实现部分中方法定义的具体逻辑.
/**
 * 实现部分的具体实现一
 * Created by max on 2016/4/13.
 */
public class ConcreteImplementorA implements Implementor{
    @Override
    public void operatoinImpl() {
        //具体的实现
    }
}
  • Client:客户端调用
/**
 * 客户端调用
 * Created by max on 2016/4/13.
 */
public class Client {
    public static void main(String[] args){
        //客户端调用逻辑
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章