《Java与模式》中提到Bridge模式的用意是将“抽象化(abstration)与实现化(Implmentation)脱耦,使二者可以独立的变化”。
抽象化就是指多个实体之间的共有概念性联系,就是忽略一些信息,把不同实体当同一实体对待。
实现化就是针对抽象化具体的实现。
脱藕也就是Bridge中针对抽象化和实现化的重要意图之所在,也就是将抽象化和实现化之间进行一定的分离,降低它们之间的耦合性,继承是属于一种强耦合(强关联),或说将它们之间的强关联关系转化成弱关联关系。
强关联就是在程序编译期间已经确定关联关系,而在运行期间不能改变他们之间的关联关系。而弱关联就是动态的确定可以在运行期间改变他们之间的关联。继承关系就是强关联,聚合就是若关联关系,所以Bridge的核心思想就在于将继承关系向聚合关系转换,换句话说就是用聚合代替继承。
Bridge模式多用于在实体在两个维度上的动态组合是运用。譬如:食物(Food)是一实体,可以抽象出来,从一个维度扩展来说如具体食物面条(Noodle),米饭(Rice)等,而从另外一个维度扩展可以是干面,湿面,干饭,稀饭。此时作为具体食物可以继承Food抽象类,如果运用Bridge模式就不继承,采用聚合形式将强关联转变为若关联关系。
package com.wayne.bridge; public abstract class Food { protected FoodImpl foodImpl; public void toFull(){ foodImpl.toFullImpl(); } } package com.wayne.bridge; public abstract class FoodImpl { public abstract void toFullImpl(); } package com.wayne.bridge; public class Rice extends FoodImpl { @Override public void toFullImpl() { System.out.println("rice make me full......."); } } package com.wayne.bridge; public class Noodle extends FoodImpl { @Override public void toFullImpl() { System.out.println("noodles make me full......."); } } package com.wayne.bridge; public class DryFood extends Food { public DryFood(FoodImpl foodImpl) { this.foodImpl = foodImpl; } } package com.wayne.bridge; public class WedFood extends Food { public WedFood(FoodImpl foodImpl) { this.foodImpl = foodImpl; } } package com.wayne.bridge; public class Person { public static void main(String[] args) { //来一碗干饭 Food food = new DryFood(new Rice()); food.toFull(); //来一碗汤面 food = new WedFood(new Noodle()); food.toFull(); } }
如果要炒饭或者炒面,那么只需要添加一个类继承Food ---> FryFood就可以了
Bridge模式就是分离抽象和实现,封装可变因素。
相关推荐
设计模式C++学习之桥梁模式(Bridge)
com.javapatterns.bridge 桥梁模式 com.javapatterns.builder 建造者模式 com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.chainofresp 责任链模式 com.javapatterns.chainofresp.scheduler 专题:...
一、桥梁模式结构图 二、桥梁模式中主要角色 抽象化(Abstraction)角色:定义抽象类的接口并保存一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义...
facade门面模式、proxy代理模式、adapter适配器(变压器)模式、composite合成模式、decorator装饰模式、bridge桥梁模式、flyweight享元模式 行为模式 template模板方法模式、memento备忘录模式、observer观察者模式...
11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、...
六、 在什么情况下应当使用桥梁模式 158 设计模式(17)-Chain of Responsibility Pattern 158 一、 职责链(Chain of Responsibility)模式 160 二、 责任链模式的结构 160 三、 责任链模式的示意性源代码 160 四...
3.桥梁模式(Bridge Pattern): 桥梁模式是将抽象部分与实现部分分离,使他们可以独立地变化。它的主要作用是降低耦合度,提高代码的灵活性和可扩展性。 4. 装饰者模式(Decorator Pattern): 装饰者模式是动态地...
六、 在什么情况下应当使用桥梁模式 设计模式(17)-Chain of Responsibility Pattern 一、 职责链(Chain of Responsibility)模式 二、 责任链模式的结构 三、 责任链模式的示意性源代码 四、 纯的与不纯的...
策略模式【STRATEGY PATTERN】 ...桥梁模式【BRIDGE PATTERN】 命令模式【COMMAND PATTERN】 装饰模式【DECORATOR PATTERN】 迭代器模式【ITERATOR PATTERN】 组合模式【COMPOSITE PATTERN】 ......
这种模式下,AP只是一个桥梁,不能进行信息包的转发。例如,在图中,连接到Bridge1或Bridge3的主机可以通过WDS连接和连接到Bridge2的主机通信。但是,连接到Bridge1的主机无法透过Bridge2与Bridge3主机相通。 中继...
如桥梁模式(Bridge Pattern) 定义:Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。) ● Abstraction——抽象化角色 它...
本文实例讲述了PHP设计模式:桥连模式Bridge。分享给大家供大家参考,具体如下: 1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向...
桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关 桥梁模式 联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是 继承关系,从而使两者可以独立的...
桥接示例马尔马拉大学 OOP 课堂作业 - 桥梁设计模式示例
第 11 章 桥梁模式【BRIDGE PATTERN】 97 第 12 章 命令模式【COMMAND PATTERN】 112 第 13 章 装饰模式【DECORATOR PATTERN】 126 第 14 章 迭代器模式【ITERATOR PATTERN】 137 第 15 章 ...
bridge)模式 桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭
2. 桥梁模式(Bridge) 桥梁模式将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联。 3. 合成模式(Composite) 合成模式将对象组织到树结构中,可以用来描述整体与部分的关系...
桥梁Bridge 不变Immutable 策略Strategy 模版Template 观察者Observer 命令Command 备忘录Memento 状态State 访问者Visitor 解释器Interpreter 调停者Mediator Iterator 责任链Chain of Responsibility