设计模式目录
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
桥梁模式 Bridge Pattern
将抽象和实现解耦,使得两者可以独立地变化
通用类图
组成
- 抽象化角色 Abstraction
它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类 - 实现化角色 Implementor
它是接口或者抽象类,定义角色必需的行为和属性 - 修正抽象化角色 RefinedAbstraction
它引用实现化角色对抽象化角色进行修改 - 具体实现化角色 ConcreteImplementor
它实现接口或抽象类定义的方法和属性
通用源码
JAVA
// 实现化角色
public interface Implementor{
// 基本方法
public void doSomething();
public void doAnything();
}
//具体实现化角色
public class ConcreteImplementor1 implements Implementor{
public void doSomething(){
...
}
public void doAnything(){
...
}
}
public class ConcreteImplementor2 implements Implementor{
public void doSomething(){
...
}
public void doAnything(){
...
}
}
//抽象化角色
public abstract class Abstraction{
//定义对实现化角色的引用
private Implementor imp;
//约束子类必须实现该构造函数
public Abstraction(Implementor _imp){
this.imp=_imp;
}
//自身属性和行为
public void request(){
this.imp.doSomething();
}
//获得实现化角色
public Implementor getImp(){
return imp;
}
}
//具体抽象化角色
public class RefinedAbstraction extends Abstraction{
//覆写构造函数
public RefinedAbstraction(Implementor _imp){
supert(_imp);
}
//修正父类的行为
@OVerride
public void request(){
....
super.request();
super.getImp().doAnything();
}
}
//场景
public class Client{
public static void main(String[] args){
//定义一个实现化角色
Implementor imp=new ConcreteImplementor1();
//定义一个抽象化角色
Abstraction abs =new RefinedAbstraction(imp);
//执行行为
abs.request();
}
}
优点
抽象 和实现分离
优秀的扩充能力
实现细节对客户透明
使用场景
不希望或适用适用继承的场景
接口或抽象类不稳定的场景
重用性要求较高的场景