您的位置:首页 > 移动开发 > Android开发

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

2016-04-13 16:47 357 查看

正文

定义:将抽象部分与实现部分分离,使它们都可以独立地进行变化

使用场景:

如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,可以通过桥接模式使它们在抽象层建立一个关联关系.

优点:分离抽象与实现\灵活的扩展以及对客户来说透明的实现等.

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){
//客户端调用逻辑
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息