桥接模式介绍

一、基本介绍

  1. 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变,是一种结构型设计模式。
  2. 桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。
  3. 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。

二、代码案例

(1)新建品牌接口及其实现类

public interface Brand {
	void open();
	void close();
	void product();
}
public class Huawei implements Brand {

	@Override
	public void open() {
		System.out.println(" 开启华为生产线 ");
	}

	@Override
	public void close() {
		System.out.println(" 关闭华为生产线 ");
	}

	@Override
	public void product() {
		System.out.println(" 生产华为设备 ");
	}

}
public class XiaoMi implements Brand {

	@Override
	public void open() {
		// TODO Auto-generated method stub
		System.out.println(" 开启小米生产线 ");
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		System.out.println(" 关闭小米生产线 ");
	}

	@Override
	public void product() {
		// TODO Auto-generated method stub
		System.out.println(" 生产小米设备 ");
	}

}

(2)新建设备抽象类及其子类

public abstract class Machine {

	private Brand brand;

	public Machine(Brand brand) {
		super();
		this.brand = brand;
	}
	
	protected void open() {
		this.brand.open();
	}
	
	protected void close() {
		brand.close();
	}
	
	protected void product() {
		brand.product();
	}
	
}
public class Phone extends Machine {

	public Phone(Brand brand) {
		super(brand);
	}

	public void open() {
		super.open();
		System.out.println(" 手机生产线 ");
	}

	public void close() {
		super.close();
		System.out.println(" 手机生产线 ");
	}

	public void product() {
		super.product();
		System.out.println(" 手机生产线 ");
	}
}
public class Watch extends Machine {

	public Watch(Brand brand) {
		super(brand);
	}
	
	public void open() {
		super.open();
		System.out.println(" 手表生产线 ");
	}
	
	public void close() {
		super.close();
		System.out.println(" 手表生产线 ");
	}
	
	public void product() {
		super.product();
		System.out.println(" 手表生产线 ");
	}
}

(3)测试

public class Client {

	public static void main(String[] args) {

		Machine phone = new Phone(new XiaoMi());
		
		phone.open();
		phone.product();
		phone.close();
		
		System.out.println("=======================");
		
		Machine watch = new Watch(new Huawei());
		
		watch.open();
		watch.product();
		watch.close();
		
		System.out.println("=======================");
		
		Machine phone2 = new Phone(new Huawei());
		
		phone2.open();
		phone2.product();
		phone2.close();
		
		System.out.println("=======================");
		
		Machine watch2 = new Watch(new XiaoMi());
		
		watch2.open();
		watch2.product();
		watch2.close();
	}

}

三、UML类图

桥接模式UML类图

四、桥接模式小结

  • 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。
  • 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成。
  • 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。
  • 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程。
  • 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景。

其他设计模式

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值