结构型模式之二——桥接模式

模式定义

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型。

模式结构

模式结构图如下所示:
这里写图片描述

1.Abstraction
用于定义抽象类的接口,它一般是抽象类而不是接口,其中定义了一个Implementor(实现抽象类)类型的对象并可以维护该对象,它与Implementor之间具有关联关系,它可以包含抽象的业务方法,还可以包含具体的业务方法。

2.RefinedAbstraction
扩充由Abstraction定义的接口,通常情况下它不再是抽象类而是具体类,它实现了在Abstraction中定义的抽象业务方法,在RefinedAbstraction中可以调用在Implementor中定义的业务方法

3.Implementor
定义实现类的接口,这个接口不一定要与Abstraction的接口完全一致,事实上这两个接口可以完全不同,一般地讲,Implemntor接口仅提供基本操作,而Abstraction定义的接口可能会做更多更复杂的操作。Implementor接口对这些基本操作进行了定义,而具体实现交给其子类。通过关联关系,在Abstraction中不仅可以拥有自己的方法,还可以调用Implementor定义的方法,使用关联关系来替代继承关系。

4.ConcreteImplementor
实现Implementor接口并具体实现它,在不同的具体实现类中提供基本操作的不同实现。

实例

现需要提供大中小三种型号的画笔,能够绘制2种不同颜色。本实例使用桥接模式来模拟该过程。
实例类图如下所示:
这里写图片描述

public abstract class Pen {
    protected Color color;

    public void setColor(Color color) {
        this.color = color;
    }

    public abstract void draw(String content);
}

public class SmallPen extends Pen {
    public void draw(String content) {
        String pen = "小号笔";
        this.color.bepaint(pen + content);
    }
}

public class MiddlePen extends Pen {
    public void draw(String content) {
        String pen = "中号笔";
        this.color.bepaint(pen + content);
    }
}

public class BigPen extends Pen {
    public void draw(String content) {
        String pen = "大号笔";
        this.color.bepaint(pen + content);
    }
}

public interface Color {
    public bepaint(String content);
}

public class Black implements Color {
    public bepaint(String content) {
        System.out.println("黑色" + content);
    }
}

public class Black implements Color {
    public bepaint(String content) {
        System.out.println("蓝色" + content);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值