设计模式: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 
相关推荐
是2的10次方啊17 小时前
设计模式与生活⑦:你打的车,隔着一个平台
设计模式
geovindu17 小时前
rust: Read-Write Lock Pattern
开发语言·后端·设计模式·rust·读写锁模式·同步型模式
工一木子2 天前
设计模式与生活⑤:天冷了,给电动车套件挡风被
设计模式
是2的10次方啊2 天前
设计模式与生活⑥:问题一个个砸过来,先写张便签
设计模式
是2的10次方啊3 天前
设计模式与生活⑤:天冷了,给电动车套件挡风被
设计模式
昭昭日月明3 天前
AI 时代的《重构》
设计模式·架构
工一木子4 天前
设计模式与生活③:你的早晨,是一套模板
设计模式
是2的10次方啊4 天前
设计模式与生活④:冰箱空了,早餐换个买法
设计模式
知守观4 天前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
多弗朗皮卡丘5 天前
C++特殊类设计
开发语言·c++·设计模式