今天来总结设计模式:桥接模式
一、引言
桥接模式是什么?为什么出现桥接模式?桥接模式怎么实现?
- 桥接模式可以理解为把程序中抽象和实现分开,中间通过一座桥进行联系,其他地方互不干扰
- 为什么出现桥接模式?可以看以下类图
类图中一共有3个接口,小米品牌,华为品牌继承于手机接口。小米和华为各有3种种类的手机。
假如我们现在要增加苹果品牌的手机,是不是应该做成如下图:
很明显,手机品牌(小米,华为,苹果)和手机样式(全面屏,折叠屏,翻盖)耦合在一起了,不利于我们程序的扩展。由此引出桥接模式。
二、桥接模式的实现
桥接模式的实现很简单,直接上类图:
很明显,相信大家已经看到桥了,没错,就是中间横线,聚合的那条桥。左边是具体的实现类,右边是抽象的手机品牌,把实现和抽象分离开,正是桥接模式的思想。
下面给大家实现一波代码:
/**
* 品牌接口
*/
public interface Brand {
}
/**品牌实现类
* 小米
*/
public class XiaoMi implements Brand {
}
/**
* 华为
*/
class HuaWei implements Brand{
}
/*
苹果
*/
class Iphone implements Brand{
}
以上是桥的右边也就是抽象部分
接下来展示桥的左边,实现部分
/**
* 手机
*/
public abstract class Phone {
private Brand brand;//聚合品牌,相当于桥
//构造方法
public Phone(Brand brand){
this.brand=brand;
}
}
//-------------------------实现类-----------------------------
/**
* 全面屏
*/
public class QuanMianPing extends Phone{
public QuanMianPing(Brand brand) {
super(brand);
}
}
/**
* 折叠屏
*/
class ZheDiePing extends Phone{
public ZheDiePing(Brand brand) {
super(brand);
}
}
class FanGai extends Phone{
public FanGai(Brand brand) {
super(brand);
}
}
//Min方法如下
可以看出,每种手机样式(全面屏,折叠屏,翻盖)都聚合了一个品牌对象,因此,现在如果要增加一种样式或者手机品牌,只需要在桥的左边,或者右边添加类即可。实现样式(实现)和品牌(抽象)分开。
三、结束
以上就是桥接模式的全部内容了,觉得写得还算通俗易懂的各位朋友动动小手点赞,谢谢大家。