【设计模式】—— 桥接模式Bridge
时间:2022-04-22
本文章向大家介绍【设计模式】—— 桥接模式Bridge,主要内容包括模式意图、模式结构、应用场景、代码结构、运行结果、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
模式意图
这个模式使用的并不多,但是思想确实很普遍。就是要分离抽象部分与实现部分。
实现弱关联,即在运行时才产生依赖关系。
降低代码之间的耦合。
模式结构
Abstraction 抽象部分的基类,定义抽象部分的基础内容。
RefinedAbstraction 抽象部分的扩充,用于对基类的内容补充,添加特定场景的业务操作。
Implementor 实现部分的基类,定义实现部分的基本内容。
ConcreteImplementor 具体的实现类。
应用场景
1 不希望在抽象和它的实现部分之间有一个固定的绑定关系
2 抽象部分以及实现部分都想通过子类生成一定的扩充内容
3 对一个抽象的实现部分的修改对客户不产生影响
代码结构
1 package com.xingoo.test;
2 /**
3 * 抽象类基类
4 * @author xingoo
5 */
6 abstract class Abstraction{
7 abstract public void operation(Implementor imp);
8 }
9 /**
10 * 实现类 基类
11 * @author xingoo
12 */
13 abstract class Implementor{
14 abstract public void operation();
15 }
16 /**
17 * 重新定义的抽象类
18 * @author xingoo
19 */
20 class RefinedAbstraction extends Abstraction{
21 public void operation(Implementor imp){
22 imp.operation();
23 System.out.println("RefinedAbstraction");
24 }
25 }
26 /**
27 * 具体的实现类
28 * @author xingoo
29 */
30 class ConcreteImplementorA extends Implementor{
31 public void operation() {
32 System.out.println("ConcreteImplementorA");
33 }
34 }
35 /**
36 * 具体的实现类
37 * @author xingoo
38 */
39 class ConcreteImplementorB extends Implementor{
40 public void operation() {
41 System.out.println("ConcreteImplementorB");
42 }
43 }
44 public class test {
45 public static void main(String[] args){
46 RefinedAbstraction abstraction = new RefinedAbstraction();
47 abstraction.operation(new ConcreteImplementorA());
48
49 abstraction.operation(new ConcreteImplementorB());
50 }
51 }
52
运行结果
ConcreteImplementorA
RefinedAbstraction
ConcreteImplementorB
RefinedAbstraction
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 分布式锁的封装也很有讲究呀
- PHP与SEO,应用curl及正则获取搜狗搜索相关关键词
- Kafka经典面试题,你都会吗?
- 提高单细胞分析准确度的工具之一:Self-assembling manifolds
- 一不小心肝出了4W字的Redis面试教程
- 双向LSTM-CRF模型用于序列标注
- 容器服务 TKE 上服务暴露的几种方式
- 【论文分享】ACL 2020 信息抽取任务中的新动向
- 工匠人iOS 代码规范
- 写一个通用的幂等组件,我觉得很有必要
- PC性能监测工具,您不可或缺的好帮手~~
- 特征工程之处理时间序列数据
- Matplotlib中的“plt”和“ax”到底是什么?
- 使用深度学习模型创作动漫故事,比较LSTM和GPT2的文本生成方法
- 聊聊BitCaskLock