桥梁模式定义:
也叫桥接模式,是一个比较简单的模式,其定义如下 :将抽象和实现解耦,使得连着可以独立的变化。
自己理解:接口 实现接口的类 抽象类 实现抽象的类
抽象类里面有一个接口的引用。抽象类里面的方法会调接口的方法。
使用的时候 首先new 实现类的对象, 然后构造抽象类对象入参为实现类的对象;
4个角色
Abstraction 抽象化角色
它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一半是抽象类。
Implementor 实现化角色
它是接口或者抽象类,定义角色必须的行为和属性
RefinedAbstraction 修正抽象画角色
他引用实现化角色对抽象化角色进行修正。
ConcreteImplementor 具体实现化角色
它实现接口或者抽象类定义的方法和属性。
实现化角色
public interface Implementor{
public void doSomething();
public void doAnything();
}
具体实现化角色
public class ConcreteImplementor1 implements 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 clsss 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){
super(imp)
}
@Override
public void request(){
super.request();
super.getImp().doAnything();
}
}
public calss Clint{
public static void main(String[] args){
Implementor imp=new ConcreteImplementor1();
Abstraction abs=new RefinedAbstraction(imp);
abs.request();
}
}
桥梁模式的优缺点
桥接模式的优点:
1、分离抽象接口及其实现部分。
2、桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。
3、实现细节对客户透明,可以对用户隐藏实现细节。
桥接模式的缺点:
1、桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进
2、桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。