java常用设计模式九:桥接模式
一、概述
将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式。比如存在2个维度,第一个维度有一个抽象类A和对应的子类A1和A2;第二个维度有另一个接口B和对应的子类B1和B2;接口A依赖接口B。
所谓的独立变化就是当我们修改A1和A2或是修改B1和B2对方都不用修改。这种抽象依赖就像桥接。
二、示例

比如上图所示:动物(抽象类)走路(接口),动物有狗(具体类)和猫(具体类),路有大路(具体类)和小路(具体类),要实现的就是 “什么动物在什么路走路”,这就是一个2维度组合,而且2个维度都可以进行独立变化。
1)动物接口
public interface Animal {
void walk();
}
2)动物实现类
public class Dog implements Animal {
public void walk() {
System.out.println("狗走路");
}
}
public class Cat implements Animal {
public void walk() {
System.out.println("猫走路");
}
}
3)路抽象类
public abstract class Road {
protected Animal animal;
public Road(Animal animal){
this.animal = animal;
}
public abstract void place();
}
4)路的实现类
public class BigRoad extends Road {
public BigRoad(Animal animal) {
super(animal);
}
public void place() {
System.out.println("在大路上");
animal.walk();
}
}
package bridge.demo; /**
* @author Administrator
* @date 2019/01/11
*/
public class SmallRoad extends Road{ public SmallRoad(Animal animal) {
super(animal);
} public void place() {
System.out.println("在小路上");
animal.walk();
}
}
5)测试类
public class Client {
public static void main(String[] args){
Animal dog = new Dog();
Animal cat = new Cat();
Road road1= new BigRoad(dog);
Road road2= new SmallRoad(cat);
Road road3= new SmallRoad(dog);
Road road4= new SmallRoad(cat);
road1.place();
road2.place();
road3.place();
road4.place();
}
}
在大路上
狗走路
在小路上
猫走路
在小路上
狗走路
在小路上
猫走路
细心的人会发现:桥接模式与抽象工厂模式很相似,都是2个维度上的变化。但是有以下区别:
- 桥接模式属于结构型模式,不是以创建对象的为目的,一般对象的创建是交给Client类去new 一个对象,对象已经存在后,怎么来组合使用这些对象;
- 抽象工厂模式属于创建型模式,以创建对象为目的,一般会在工厂类内部提供new 一个对象的方法。
java常用设计模式九:桥接模式的更多相关文章
- Java设计模式13:常用设计模式之桥接模式(结构型模式)
1. Java之桥接模式(Bridge Pattern) (1)概述: 首先我们说一个生活中的例子: 就拿汽车在路上行驶的来说.即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也 ...
- java常用设计模式总览
一.java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...
- java面试题之----jdbc中使用的设计模式(桥接模式)
1.JDBC(JavaDatabase Connectivity) JDBC是以统一方式访问数据库的API. 它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracl ...
- java设计模式7——桥接模式
java设计模式7--桥接模式 1.桥接模式介绍 桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化.它是一种对象结构型模式,又称为柄体模式或接口模式. 2.解决问题 2.1.将复杂的组合 ...
- 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)
原文:乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) 作者:webabcd 介绍 ...
- php设计模式之桥接模式
php设计模式之桥接模式 一.概述 桥接模式:将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果. 其实就是讲不相关的东西通过类(本例中是SendInfo)结合在一起,从而 ...
- JAVA常用设计模式(一、单例模式、工厂模式)
JAVA设计模式之单例模式 import java.util.HashMap; import java.util.Map; /** * 设计模式之单例模式 * 单例模式(Singleton Patte ...
- JAVA开发的23种设计模式之 --- 桥接模式
桥接模式 概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构. 应用场景 实现系统可能有多 ...
- java设计模式之桥接模式
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦.这种模式涉及到一个作为桥接的 ...
随机推荐
- TZOJ 2999 Network(连通图割点数量)
描述 A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting ...
- Hashed collections哈希集合
[定义] 有index的集合 [hash的原理] term for a situation when two different objects return the same hashcode: h ...
- PyCharm 2019 最新激活方式总结(最新最全最有效!!!
host 注册码 http://idea.lanyus.com/ https://www.cnblogs.com/yjd_hycf_space/p/9110550.html ...
- swift - 加速器/摇一摇功能
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...
- YII2中查询生成器Query()的使用
YII2中的yii\db\Query给我们提供了非常丰富的方法,方便我们构建复杂的SQL语句. Query()与createCommand最大区别在于,后者直接使用我们写好的SQL语句,前者通过参数和 ...
- YII2中behavior行为的理解与使用
YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为. 注意行为是对功能的扩展,不要 ...
- ios证书安装和打包流程
iOS开发流程 1.拿到源文件 2文件目录大致名字 一.证书配置 参考网站:http://www.jianshu.com/p/9d9e3699515e (证书配置参考地址) 准备工作 首先要有苹 ...
- JavaScript 字符串用于存储和处理文本
JavaScript 字符串用于存储和处理文本 var string_value='dasfsdfsd'; 注意:字符串利用索引精确定位取值 var character=string_value[7] ...
- python 面向对象编程 之 单例模式
单例模式三种实现方式: 单例模式:单例模式是解决系统资源浪费的一种方案,是指一个类实例化后可以多次使用此对象. 单例模式应用场景:数据库操作.日志.后台打印 # settings.py# Host=' ...
- ie8,9不支持indexOf解决办法,纯拷贝
原文在这里,大家快去点啊 自从开始工作后,就没有再碰过原型链了,今天遇到ie8不认识indexOf的时候才发现原型这么嚣张,,哈哈 把代码粘过来,以后留着看 //添加数组IndexOf方法 if (! ...