设计模式: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 小时前
Java设计模式之状态模式详解
java·设计模式·状态模式
smallluan7 小时前
JS设计模式(4):观察者模式
javascript·观察者模式·设计模式
pengyu9 小时前
【Java设计原则与模式之系统化精讲:零】 | 编程世界的道与术(理论篇)
java·后端·设计模式
hstar952710 小时前
三十三、面向对象底层逻辑-SpringMVC九大组件之HandlerExceptionResolver接口设计
java·spring·设计模式·架构
摘星编程18 小时前
抽象工厂模式深度解析:从原理到与应用实战
设计模式·抽象工厂模式·源码分析·软件架构·实战案例
季鸢1 天前
Java设计模式之观察者模式详解
java·观察者模式·设计模式
蔡蓝1 天前
设计模式-迪米特法则
设计模式·log4j·迪米特法则
Gixy1 天前
聊聊纯函数与不可变数据结构
前端·设计模式
Java菜鸟、1 天前
设计模式(代理设计模式)
java·开发语言·设计模式
何中应1 天前
【设计模式-3.7】结构型——组合模式
java·设计模式·组合模式