设计模式之桥接模式

定义

桥接模式,可以将抽象与实现分离,使二者可以各自单独变化而不受对方约束,当使用的时候再将他们组合起来,如此降低了抽象与实现这两个可变维度的耦合度,以保证系统的可扩展性

使用场景

平常我们在买手机的时候,手机一般会有不同的规格配置,不同的颜色,例如:8GB+128GB(黑色)、8GB+128GB(白色)、8GB+128GB(红色)等,从这些组合可以看出,规格配置的数量为m,颜色的数量为n,进行组合,得到的数量即m*n,如果将这种情况应用到系统中,随着产品规格配置和颜色不断增加,产生的类会越来越多,这时我们使用桥接模式将类的数量渐少为m+n个。下面我们来看看桥接模式的实现方式。

分析上面的组合,我们可以知道,手机有多种规格配置,同样也有多种颜色,但是手机的这两种属性是可以独立存在,互不影响。因此,我们可以将其分别抽象出来,通过桥接模式将它们联系起来,减少两个可变维度的耦合度。

代码实现

color接口,为手机的各种颜色实现留好了接口。假设一种颜色对应一个类,那么应该有白色、黑色、红色等

public interface Color {
    void color();
}

Color子类,实现Color接口,并重写color方法

public class BlackColor implements Color{
    @Override
    public void color() {
        System.out.println("黑色");
    }
}
public class WhiteColor implements Color{
    @Override
    public void color() {
        System.out.println("白色");
    }
}

在手机抽象类引用Color接口,将不同规格配置的手机与不同的颜色联系起来

public abstract class Phone {

    protected Color color;

    public Phone(Color color) {
        this.color = color;
    }

    abstract void properties();
}

手机子类,实现其抽象方法

public class S1Phone extends Phone {

    public S1Phone(Color color) {
        super(color);
    }

    @Override
    void properties() {
        color.color();
        System.out.println("+128GB手机");
    }
}

至此我们可以随意的组合出不同规格配置的不同颜色的手机,实现了抽象与实现之间的解耦,提升了系统的可扩展性。

public class Client {
    public static void main(String[] args) {
        new S1Phone(new BlackColor()).properties();
        new S1Phone(new WhiteColor()).properties();
        // 打印结果
        // 黑色+128GB手机
        // 白色+128GB手机
    }
}

以上就是桥接模式的所有内容,我将持续更新设计模式,欢迎大家一起交流😁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值