结构型---桥接模式

概述

  • 桥接模式(Bridge Pattern)将抽象部分和它的实现相解耦,使得两者都能独立变化。
  • 桥接模式又被称为柄体模式接口模式,它用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活并予以扩展,同时有效的控制了系统中类的个数。

结构

  • Abstraction(抽象类):定义抽象类,还维护了一个Implementor(实现类接口)的对象,
  • RefindedAbstraction(扩充抽象类):扩充由Abstraction(抽象类)定义的接口,通常是具体类,实现了在Abstraction(抽象类)定义的抽象业务方法。也可以调用Implementor(实现类接口)中定义的业务方法。
  • Implementor(实现类接口):定义实现类的接口这个接口不用和Abstraction(抽象类)保持一致,它提供基本操作,使用关联关系来替代继承关系。
  • ConcreteImplementor(具体实现类):实现Implementor接口,在不同的ConcreteImplementor提供基本操作的不同实现,程序运行时,ConcreteImplementor对象将替换其父类对象,提供给抽象类具体的业务操作方法。

代码结构

  • 实现类接口
public interface Implementor {
	//业务方法
	public void operationImpl();	
}
  • 具体实现类
public class ConcreteImplementor implements Implementor {
	@Override
	public void operationImpl() {
		//具体业务方法的实现
	}
}
  • 抽象类
public abstract class Abstraction {	
	//维护一个实现类接口的对象
	protected Implementor impl;	
	public void setImpl(Implementor impl) {
		this.impl=impl;
	}
	//声明抽象业务方法
	public abstract void operation();
}
  • 扩充抽象类
public class RefinedAbstraction extends Abstraction{
	@Override
	public void operation() {
		// 业务代码
		impl.operationImpl();//调用实现类的方法
		// 业务代码
	}
}

代码实现

需求:开发一款可以在多种系统(Windows,Linux,UNIX)展示多种格式图片(BMP,JPG,GIF,PNG)的模块。

  • 具体代码就省略了:留下结构图
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200522114640889.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg2MTM5OQ==,size_16,color_FFFFFF,t_70

优点

  • 分离抽象接口及其实现部分。
  • 取代多层继承方案,极大的减少了此类的个数。
  • 提高了系统的可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统符合开闭原则。

缺点

  • 增加系统的理解与设计难度
  • 要求正确的识别出系统中两个独立变化的维度,因此其使用范围是有一定的局限性。

应用场景

  • 桥接模式一般与适配器模式联用。
  • 松耦合
  • 一个类存在两个或多个独立变化的维度,且这些维度都需要独立进行扩展。
  • 对于那些不希望使用继承或因为多层继承,导致系统中类的个数急剧增加的系统,
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读