文档章节

Java设计模式之桥接模式

断了联系
 断了联系
发布于 2016/08/30 21:48
字数 697
阅读 7
收藏 0

定义:将抽象部分与实现部分分离,使它们都可以独立的变化。

特点:桥接模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

企业级开发和常用框架中的应用:多继承的结构

只是从定义理解桥接模式,很难理清它的作用,下面举个例子来说明:

电脑城卖电脑,电脑种类分了平板电脑,笔记本电脑,台式电脑;电脑品牌又分了联想,戴尔,华硕,神州。如果从多继承的角度建类,则需要先建一个电脑抽象类,然后平板电脑、笔记本电脑、台式电脑分别继承抽象电脑类,不同的电脑品牌又要分别继承这些电脑分类的类,然后实现方法,这样,如果要添加一个电脑种类则不同的电脑品牌还要分别继承该类,或者添加一个电脑品牌,则又要分别继承不同的分类,这样就是创建变得复杂化。

而桥接模式的思想就是从不同的维度实现,通过提高耦合度的方式来减少开发工作量,比如上面的电脑分类和电脑品牌分类分属于两个维度,如果我们从两个维度分别实现,这样我们可以减少开发复杂度,这就是Java开发的单一原则。

具体实现代码如下:

package com.test.bridge;

interface Brand {
	public void sale();
}

class Dell implements Brand {
	public void sale() {
		System.out.println("销售戴尔品牌电脑");
	}
}

class Lenovo implements Brand{
	public void sale() {
		System.out.println("销售联想品台电脑");
	}
}

class Computer {
	protected Brand brand;
	public Computer(Brand b) {
		this.brand = b;
	}
	public void sale() {
		brand.sale();
	}
}

class Desktop extends Computer{

	public Desktop(Brand b) {
		super(b);
	}
	@Override
	public void sale() {
		super.sale();
		System.out.println("电脑类型为台式电脑");
	}
}

class Laptop extends Computer{

	public Laptop(Brand b) {
		super(b);
	}
	public void sale() {
		super.sale();
		System.out.println("电脑类型为笔记本");
	}
}

class Pad extends Computer{

	public Pad(Brand b) {
		super(b);
	}
	@Override
	public void sale() {
		super.sale();
		System.out.println("电脑类型为平板电脑");
	}
}

public class Demo {
	public static void main(String[] args) {
		//销售联想笔记本
		Brand b = new Lenovo();
		Computer c = new Laptop(b);
		c.sale();
		
		//销售dell台式机
		Brand b1 = new Dell();
		Computer c1 = new Desktop(b1);
		c1.sale();
	}
}

通过上面的例子我们看出,我们将品牌(Brand)以对象的形式放到电脑分类的类里面,这样就有效的降低了电脑的复杂度,而且是几何降低,而且分两个方向实现,还让我们的思路更加清晰。

© 著作权归作者所有

断了联系
粉丝 1
博文 33
码字总数 22234
作品 0
成都
程序员
私信 提问
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
274
0
Java之23种设计模式解析(二)

B、结构模式(7 种) 我们接着讨论设计模式,上篇文章我讲完了 5 种创建型模式,这章开始,我将讲下 7 种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模...

wersdffg
2015/02/15
142
0
java 23种设计模式 深入理解

以下是学习过程中查询的资料,别人总结的资料,比较容易理解(站在各位巨人的肩膀上,望博主勿究) 创建型 抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html ...

wc_飞豆
2018/03/16
132
0
java中23种设计模式(上)

参考网址:http://blog.csdn.net/zhangerqing 资源:http://download.csdn.net/detail/zhangerqing/4835830 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用、多数...

青涩的梦
2018/06/26
0
0
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
201
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部