设计模式:桥接模式

什么是桥接模式

桥接模式是7种结构型模式中的一种,用于把抽象化与现实化解耦,使得二者可以独立变化.它通过提供抽象化和现实化之间的桥接结构,来实现二者的解耦.

抽象化

其概念是将复杂物体的一个或几个特性抽出去,只需要注意其他特性的行动或者过程.在面向对象就是将对象共同的性值抽取出去而形成类的过程.

实现化

针对抽象化给出的具体实现.它和抽象化是一个互逆的过程,实现化是对抽象化事务的进一步具体化.

解耦

解耦就是将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联转化成弱关联,将两个角色之间的继承关系改为关联关系。

主要是实现系统可以有多个角度分类,每一种角度都可能变化,那么把这种多角度分类给分离出来让他们独立变化,减少他们之间的耦合。

桥接模式的作用

处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联.

一个经典的桥接模式案例

已知电脑现有三种类型:台式机、笔记本、平板电脑,在保证类型还能够继续扩展的情况下,我们知道电脑还有多种品牌:联想、华为、戴尔、神舟。
在这里插入图片描述

如何设计桥接模式

1.抽象出变化的维度,我们会发现可扩展的有电脑类型和电脑品牌。
2.将这两个维度变成依赖关系。

品牌维度的实现:

/*
 * 品牌接口
 */
public interface Brand {
	
	void sale();
}
/*
 * 联想
 */
class Lenovo implements Brand{
	 
    @Override
    public void sale() {
        System.out.println("销售联想电脑");
    }
}
 /*
  * 戴尔
  */
class Dell implements Brand{
 
    @Override
    public void sale() {
        System.out.println("销售戴尔电脑");
    }
}
 /*
  * 神舟
  */
class Hasee implements Brand{
 
    @Override
    public void sale() {
        System.out.println("销售神舟电脑");
    }
}

电脑类型维度的实现:

/*
 * 电脑基类
 */
public class computer {
	//关联品牌
	protected Brand brand;

	public computer(Brand brand) {
		this.brand=brand;
	}
	public void sale() {
		brand.sale();
	}
}
/*
 * 台式机
 */
class Desktop extends computer{

	public Desktop(Brand brand) {
		super(brand);
		// TODO Auto-generated constructor stub
	}
	
	public void sale() {
		System.out.println("销售台式机");
	}
	
}
/*
 * 笔记本
 */
class Laptop extends computer{

	public Laptop(Brand brand) {
		super(brand);
		// TODO Auto-generated constructor stub
	}
	public void sale() {
		System.out.println("出售笔记本");
	}
}
/*
 * 平板电脑
 */
class Pad extends computer{

	public Pad(Brand brand) {
		super(brand);
		// TODO Auto-generated constructor stub
	}
	public void sale() {
		System.out.println("销售平板电脑");
	}
	
}

测试代码:

public class Test {
	 public static void main(String[] args) {
		 
	        // 销售联想的笔记本电脑
	        computer c = new Laptop(new Lenovo());
	        c.sale();
	 
	        // 新增不同的品牌时,只需要到Brand接口中新增即可
	        computer c2 = new Desktop(new Hasee());
	        c2.sale();
	 }
}

在这里插入图片描述

桥接模式的总结

1.桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则,复用性较差,类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。
2.桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值