场景描述
模式镇模式村有个桥,桥北的人比较富有,桥南的人比较贫穷;;桥北的人为了彰显自己的实力,他们都用金子做的水龙头,桥南的人比较安逸;他们则用普通的铁质水龙头。这可苦恼了水管工人,于是他想到了这么做。
模式简介
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
模式类图
桥接模式包含如下角色:
• Abstraction:抽象类
• RefinedAbstraction:扩充抽象类
• Implementor:实现类接口
• ConcreteImplementor:具体实现类
代码示例
// 实现类接口
public interface Tap{
public void fill();
}
//抽象类
public abstract class Abstraction{
protected Tap tap;
public void setTap(Tap tap)
{
this.tap=tap;
}
public abstract void doFill();
}
//扩展抽象类
public class RefinedAbstraction extends Abstraction{
public void doFill()
{
//代码
tap.fill();
//代码
}
}
//实现类A
public AuTap implements Tap{
public void fill(){
System.out.println("金制水龙头");
}
}
//实现类B
public FeTap implements Tap{
public void fill(){
System.out.println("铁质水龙头");
}
}
public class Demo{
public static void main(String[] args){
RefinedAbstraction ra = new RefinedAbstraction();
ra.setTap(new AuTap());
System.out.println(ra.doFill());
ra.setImpl(new FeTap());
System.out.println(ra.doFill());
}
}
水管工人通过这样的操作,可以灵活的改变水龙头的实现;即使他们想换成别的材质的水龙头,他也可以快速的实现。
使用场景
-
不希望或不适⽤使⽤继承的场景
-
接⼝或抽象类不稳定的场景
-
重⽤性要求较⾼的场景
- 本文链接: https://www.sunce.wang/archives/she-ji-mo-shi-zhi-shi-xian-bai-bian-de-qiao-jie-mo-shi
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!