CSDN热搜
设计模式总述 - 博客园/千千寰宇
桥接模式(Bridge Pattern)-(最通俗易懂的案例) - CSDN
属于结构型设计模式
先来看一个例子: 假如你有一个几何形状Shape类,从它能扩展出2个子类: 圆形Circle和方形Square。 你希望对这样的类层次结构进行扩展以使其包含颜色,所以你打算创建名为红色Red和蓝色Blue的形状子类。 但是, 由于你已有2个子类, 所以总共需要创建4个类才能覆盖所有组合 例如 蓝色圆形Blue Circle和 红色方形Red Square 。
例如 蓝色圆形Blue Circle和 红色方形Red Square 。
例如: 添加三角形状, 你需要新增两个子类, 也就是每种颜色一个; 此后新增一种新颜色需要新增三个子类, 即每种形状一个。 照这样下去,所有组合类的数量将以几何级数增长,情况会越来越糟糕。
问题的根本原因在于我们试图在两个独立的维度——形状与颜色上进行扩展。 这在处理继承关系时是很常见的问题。 桥接模式:通过将继承改为组合的方式来解决这个问题。 具体来说, 就是抽取其中一个维度并使之成为独立的类层次, 这样就可以在初始类中引用这个新层次的对象, 从而使得一个类不必拥有所有的状态和行为。
这在处理继承关系时是很常见的问题。
具体来说, 就是抽取其中一个维度并使之成为独立的类层次, 这样就可以在初始类中引用这个新层次的对象, 从而使得一个类不必拥有所有的状态和行为。
将颜色相关的代码抽取到拥有 红色和 蓝色两个子类的颜色类中 然后在形状类中添加一个指向某一颜色对象的引用成员变量。 现在,形状类可以将所有与颜色相关的工作【委派】给连入的颜色对象。 这样的引用就成为了形状和颜色之间的桥梁。 此后, 新增颜色将不再需要修改形状类的类层次, 反之亦然。
此后, 新增颜色将不再需要修改形状类的类层次, 反之亦然。
Implementor 接口对这些基本操作进行了声明,而具体实现交给其子类。 通过关联关系,在 Abstraction 中不仅拥有自己的方法,还可以调用到 Implementor 中定义的方法,使用关联关系来替代继承关系。
设计模式的原则之一: 少继承,多聚合(组合)。
即一个类只有一个变化的原因 因此,多继承结构的方案,复用性比较差 且多继承结构中类的个数非常庞大。 桥接模式是比多继承方案更好的解决方法
因此,多继承结构的方案,复用性比较差
因此,其使用范围具有一定的局限性。
我们就以上述的形状与颜色案例中,这两个独立的维度来实现给不同的形状刷上不同颜色的例子来讲解:
out
我们在客户端调用时只需按照需求来挑选即可:
例如,增加一个黄色:
实现系统可能有多个角度分类(例如例子中的形状与颜色),每一种分类都有可能变化,那么把这种多角度分离出来让他们独立变化,减少他们之间的耦合。
路由器模式
桥接模式
...
Bridged(桥接模式) - VMnet0 NAT(网络地址转换模式) - VMnet8 Host-Only(仅主机模式)- VMnet1
那根虚拟网桥,像不像上面说的【引用对象(color)】
[docker] 浅谈Docker:网络模式及从容器内部访问宿主机的IP地址 - 博客园/千千寰宇 docker有4种网络模式: host模式 / container模式 / none模式 / bridge模式
docker有4种网络模式: host模式 / container模式 / none模式 / bridge模式
为什么要把光猫从路由模式改成桥接模式? - Zhihu
网络连接三种方式-桥接模式 - CSDN
使用道具 举报
本版积分规则 回帖并转播 回帖后跳转到最后一页
程序园优秀签约作者
0
粉丝关注
9
主题发布