前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java桥接模式(bridge)

Java桥接模式(bridge)

作者头像
用户4919348
发布2019-04-02 11:13:19
7100
发布2019-04-02 11:13:19
举报
文章被收录于专栏:波波烤鸭波波烤鸭

  本文介绍下Java设计模式中的桥接模式

桥接模式

1.多层继承结构

  在现实生活中比如商城中以电脑为例来说,如何处理电脑销售分类的问题,我们可以使用多层继承结构实现这种场景

在这里插入图片描述
在这里插入图片描述

问题

1.1扩展性问题

1>. 如果要增加一个新的扩展类型:智能手机,则要在每个品牌下增加一个新类 2>. 如果要新增加一个品牌,则这个品牌下要增加各个类型的电脑

1.2违反单一职责原则

一个类有两个引起该类变化的因素。

2.桥接模式实现

2.1场景分析

  1. 商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?
  2. 这个场景中有两个变化的维度:电脑类型、电脑品牌 这个场景中有两个变化的维度:电脑类型、电脑品牌
在这里插入图片描述
在这里插入图片描述

2.2桥接模式核心要点:

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

在这里插入图片描述
在这里插入图片描述

3.代码实现

品牌类

代码语言:javascript
复制
/**
 * 品牌
 * @author Administrator
 *
 */
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("销售Dell电脑");
	}
	
}

class Shenzhou implements Brand {
	
	@Override
	public void sale() {
		System.out.println("销售神舟电脑");
	}
	
}

电脑维度,也就是桥接类

代码语言:javascript
复制
/**
 * 电脑类型的维度
 * @author Administrator
 *
 */
public class Computer2 {
	
	protected Brand brand;
	
	public Computer2(Brand b) {
		this.brand = b;
	}
	
	public void sale(){
		brand.sale();
	}
	
}

class Desktop2 extends Computer2 {

	public Desktop2(Brand b) {
		super(b);
	}
	
	@Override
	public void sale() {
		super.sale();
		System.out.println("销售台式机");
	}
}

class Laptop2 extends Computer2 {
	
	public Laptop2(Brand b) {
		super(b);
	}
	
	@Override
	public void sale() {
		super.sale();
		System.out.println("销售笔记本");
	}
}

测试类

代码语言:javascript
复制
public class Client {
	public static void main(String[] args) {
		//销售联想的笔记本电脑
		Computer2  c = new Laptop2(new Lenovo());
		c.sale();
		//销售神舟的台式机
		Computer2 c2 = new Desktop2(new Shenzhou());
		c2.sale();
	}
}

4.桥接模式总结

  1. 桥接模式可以取代多层继承的方案。 多层继承违背了单一职责原则,复用性较差,类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。
  2. 桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年02月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 桥接模式
    • 1.多层继承结构
      • 1.1扩展性问题
      • 1.2违反单一职责原则
    • 2.桥接模式实现
      • 2.1场景分析
      • 2.2桥接模式核心要点:
    • 3.代码实现
      • 4.桥接模式总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档