java设计模式7——桥接模式
java设计模式7——桥接模式
1、桥接模式介绍
桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化。它是一种对象结构型模式,又称为柄体模式或接口模式。
2、解决问题
2.1、将复杂的组合设计问题转变为可以桥接的组合问题。如电脑的例子,电脑有类型和品牌,两者可以任意组合。
2.2、没有用设计模式时的示意图

2.3、使用桥接模式后的示意图
将这个场景中的两个变化的维度分离,品牌和类型。两者通过桥接进行两两组合。

3、代码演示:
3.1、编写品牌的抽象类
package com.xgp.company.结构性模式.桥接模式;
/**
* 品牌类
*/
public interface Brand {
void info();
}
3.2、由抽象类诞生出品牌
苹果:
package com.xgp.company.结构性模式.桥接模式;
/**
* 苹果品牌
*/
public class Apple implements Brand {
@Override
public void info() {
System.out.print("苹果");
}
}
联想:
package com.xgp.company.结构性模式.桥接模式;
public class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
}
@Override
protected void info() {
super.info();
System.out.println("笔记本");
}
}
3.3、电脑类型的抽象类
package com.xgp.company.结构性模式.桥接模式;
/**
* 抽象的电脑类型类
*/
public abstract class Computer {
//组合:品牌,电脑自带品牌
protected Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
protected void info() {
//自带品牌
brand.info();
}
}
3.4、由电脑类型的抽象类诞生实现类
台式电脑:
package com.xgp.company.结构性模式.桥接模式;
public class Desktop extends Computer {
public Desktop(Brand brand) {
super(brand);
}
@Override
protected void info() {
super.info();
System.out.println("台式机");
}
}
笔记本电脑:
package com.xgp.company.结构性模式.桥接模式;
public class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
}
@Override
protected void info() {
super.info();
System.out.println("笔记本");
}
}
3.5、编写测试类,进行桥接
package com.xgp.company.结构性模式.桥接模式;
public class Test {
public static void main(String[] args) {
//苹果笔记本
Computer computer = new Laptop(new Apple());
computer.info();
//联想台式机
Computer computer12 = new Desktop(new Lenovo());
computer12.info();
}
}
输出结果:
苹果笔记本
联想台式机
4、类图示意:

5、好处分析:

6、弊端分析:

7、最佳实现

8、现已经使用的场景

java设计模式7——桥接模式的更多相关文章
- java设计模式之桥接模式
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦.这种模式涉及到一个作为桥接的 ...
- Java设计模式:桥接模式
问题提出 生活中有很多事物集合,设为A1,A2......Am ,而每个事物都有功能F1,F2....Fn. 例如邮局的发送业务.简单模拟有两类事物:信件和包裹,均有平邮和挂号邮寄功能.程序设计中如何 ...
- Java设计模式应用——桥接模式
性能管理系统中,数据产生后需要经过采集,汇聚,入库三个流程,用户才能查询使用. 采集可以是snmp采集,也可以是ems采集:汇聚可以使storm汇聚,也可以是spark汇聚:入库可以是hdfs入库,也 ...
- java设计模式之-----桥接模式
一.概念定义 将抽象部分和实现部分分离,使他们都可以独立的变化.(这句话有点抽象啊..) 在软件系统中,某种类型由于自身逻辑,具有多个维度的变化,如何利用面向对象的技术来使得该类型沿着多方向变化,而又 ...
- JAVA设计模式之桥接模式(bridge)
桥接模式: 分离抽象与具体实现,让他们可以独自发展,防止类爆炸 场景: 过年走亲戚是我们中国人传统的习俗,走亲戚那就少不了要买东西(苹果,牛奶等等),这些具体的东西就是具体的类 蒙牛牛奶,有机苹果,有 ...
- 八戒转世投胎竟然是Java设计模式:桥接模式
目录 示例 代码实例 桥接模式 定义 意图 主要解决问题 何时使用 优缺点 八戒转世投胎的故事 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1.比如有 ...
- java面试题之----jdbc中使用的设计模式(桥接模式)
1.JDBC(JavaDatabase Connectivity) JDBC是以统一方式访问数据库的API. 它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracl ...
- Java设计模式——装饰者模式
JAVA 设计模式 装饰者模式 用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
随机推荐
- python打印图形
i = 0 while i < 5: # print('*****') 效果与下行相同 print('*'*5) i+=1 print('\n\n') i = 1 while i < 6: ...
- [工具] 利用setuptools打包python程序
一.准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二.编辑setup.py 1.编辑setup.py文件 from set ...
- woj - 将一个问题转换为背包问题
Problem 1538 - B - Stones II Time Limit: 1000MS Memory Limit: 65536KB Total Submit: 428 Accepte ...
- dp——洛谷 P1541 乌龟棋 —— by hyl天梦
题目:(转自 https://www.luogu.com.cn/problem/P1541) 题目描述 乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NN格是 ...
- [bzoj3244] [洛谷P1232] [Noi2013] 树的计数
Description 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同, ...
- python之set集合操作
set集合天生具有去重功能 1.创建集合,集合的value类型:string.tuple.frozenset.数字等不可变类型: s1 =set()#空集合 s2=set(") s3=set ...
- Object Detection API error: “ImportError: cannot import name anchor_generator_pb2”
Configuring the Object Detection API on Windows is a tricky task. You will find the answer in the fo ...
- 富文本编辑器、全文检索和django发送邮件
1.富文本编辑器 1.1快速了解 借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的.所见即所得的页面.此处以tinymce为例,其它富文本编辑器的使用也是类似的. 在虚拟环境中 ...
- C语言博客作业8
本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业地址 我在这个课程的目标是 熟练运用C语言来写代码 这个作业在那个具体方面帮助我实现目标 while语句的运用 参考文献 ...
- Docker深入浅出系列 | 容器初体验
目录 Docker深入浅出系列 | 容器初体验 教程目标 预备工作 容器与虚拟化技术 什么是Docker 为什么要用Docker 事例 什么是容器镜像和容器 容器与虚拟机的区别 Vagrant与Doc ...