23种设计模式笔记第七篇桥接模式(参考狂神视频)

桥接模式(Bridge)

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式(Handle and Body)或接口模式(Interface)

模式动机

桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了

桥接模式的作用:用来处理多种维度变化的问题

桥接模式的实现

这里以电脑类型和品牌为例实现解耦,可以各种扩展互不影响。首先创建品牌接口,再创建两个实现品牌的类,然后创建一个类型类,最后创建两个具体类型类。其实就是在Computer中添加了桥接

UML类图:

UML中类之间的六大关系_Big Bird的博客-CSDN博客_uml关系

具体代码实现:

//抽象出一个品牌的接口
public interface Brand {
	void info();
}

//苹果品牌
public class Apple implements Brand {
	@Override
	public void info() {
		System.out.println("苹果品牌");		
	}
}

//联想品牌
public class Lenovo implements Brand {
	@Override
	public void info() {
		System.out.println("联想品牌");		
	}
}
//抽象的电脑类型类
public abstract class Computer {
	//使用组合
	protected Brand brand;
	
	public Computer(Brand brand) {
		this.brand = brand;
	}
	
	public void info() {
		//自带品牌
		brand.info();
	}
}
//台式机
class Desktop extends Computer{
	public Desktop(Brand brand) {
		super(brand);
	}
	
	@Override
	public void info() {
		super.info();
		System.out.println("台式机");
	}
}
//笔记本
class Laptop extends Computer{
	public Laptop(Brand brand) {
		super(brand);
	}
	
	@Override
	public void info() {
		super.info();
		System.out.println("笔记本");
	}
}

测试一下

public class Test {
	public static void main(String[] args) {
		//苹果笔记本
		Computer computer = new Laptop(new Apple());
		computer.info();
		//联想台式机
		Computer computer2 = new Desktop(new Lenovo());
		computer2.info();
	}
}

 

 桥接模式的优缺点

 桥接模式与适配器模式

适配器模式解决兼容问题,桥接模式解决功能扩展问题

猜你喜欢

转载自blog.csdn.net/qq_44709970/article/details/124642143