设计模式:19、桥接模式

目录

0、定义

1、桥接模式的四种角色

2、桥接模式的UML类图

3、示例代码


0、定义

将抽象部门与实现部分分离,使它们都可以独立地变化。

1、桥接模式的四种角色

  • 抽象(Abstraction):一个抽象类,包含实现者(Implementor)声明的变量。
  • 实现者(Implementor):实现者 角色是一个接口(抽象类),该接口(抽象类)中的方法不一定与Abstraction 类中的方法一致。Implementor 接口(抽象类)负责定义基本操作,而Abstraction类负责定义基于这些操作的较高层次的操作。
  • 细化抽象(Refined Abstraction):细化抽象抽象 角色的一个子类,该子类在重写(覆盖)抽象 角色中的方法时,在给出一些必要的操作后,将委托Implementor类型对象调用相应的方法。
  • 具体实现者(Concrete Implementor):具体实现者 是实现(拓展)Implementor接口(抽象类)的类

2、桥接模式的UML类图

3、示例代码

实现者(对修改关闭)

java 复制代码
package xyz.jangle.design.bridge;

public interface Implementor {
	
	public void operationImp();

}

抽象(对修改关闭)

java 复制代码
package xyz.jangle.design.bridge;

public abstract class Abstraction {
	
	Implementor impl;
	
	public Abstraction(Implementor impl) {
		super();
		this.impl = impl;
	}

	public abstract void operation();

}

细化抽象(对拓展开放,可以实现多个细化抽象)

java 复制代码
package xyz.jangle.design.bridge;

public class RefinedAbstraction extends Abstraction {

	public RefinedAbstraction(Implementor impl) {
		super(impl);
	}

	@Override
	public void operation() {
		impl.operationImp();	//重要实现部分由Implementor的子类的operationImp()方法负责。
	}

}

具体实现者1(对拓展开放,可以新增具体实现者。)

java 复制代码
package xyz.jangle.design.bridge;

public class ConcreteImplementor1 implements Implementor {

	@Override
	public void operationImp() {
		System.out.println("to do something 1 ");
	}

}

具体实现者2

java 复制代码
package xyz.jangle.design.bridge;

public class ConcreteImplementor2 implements Implementor {

	@Override
	public void operationImp() {
		System.out.println("to do something 2 ");
	}

}

客户端(使用)

java 复制代码
package xyz.jangle.design.bridge;

public class AppMain19 {

	public static void main(String[] args) {
		
		ConcreteImplementor1 implementor1 = new ConcreteImplementor1();
		RefinedAbstraction refined = new RefinedAbstraction(implementor1);
		refined.operation();
		
		ConcreteImplementor2 implementor2 = new ConcreteImplementor2();
		RefinedAbstraction refined2 = new RefinedAbstraction(implementor2);
		refined2.operation();

	}

}

输出结果:

bash 复制代码
to do something 1 
to do something 2 
相关推荐
小湘西8 小时前
互联网黑话持续更新
其他·设计模式
a3535413828 小时前
设计模式——访问者模式
设计模式·访问者模式
Eloudy8 小时前
动态库中不透明数据结构的设计要点总结
数据结构·设计模式
mCell16 小时前
为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
前端·设计模式·agent
阿里巴巴淘系技术团队官网博客18 小时前
设计模式Trustworthy Generation:提升RAG信赖度
人工智能·设计模式
Loo国昌1 天前
SmartArchitect:AI 驱动的设计平台,让想法秒变流程图
人工智能·后端·设计模式·流程图
为美好的生活献上中指1 天前
java每日精进 02.10【震惊!数据库树形结构设计5大黑科技:从菜鸟到大神,一文让你性能飙升100倍!】
java·开发语言·设计模式
A小码哥1 天前
CRISP 五要素的高效构建策略
设计模式
yangpipi-1 天前
C++并发编程-9. Actor和CSP设计模式
java·c++·设计模式
YigAin1 天前
Unity23种设计模式之 责任链模式
设计模式·责任链模式