文档章节

GOF23之桥接模式

captainliu
 captainliu
发布于 2017/05/15 18:21
字数 221
阅读 13
收藏 0

桥接模式:当建立的对象包含多个维度时,我们可以将维度拆分,中间通过bridge来建立关系,这就是桥接模式。

下面我们以电脑类型与电脑品牌为例

如果采用多重集成那么扩展性受到限制,并且违反单一职责原则。因此采用桥接模式

package com.gof.bridge;

/**
 * 品牌
 * @author root
 *
 */
public interface Brand {
	void sale();
}

class  Lenovo implements Brand{

	@Override
	public void sale() {
		System.out.println("Lenovo.sale()");
	}
	
}

class  Dell implements Brand{

	@Override
	public void sale() {
		System.out.println("Dell.sale()");
	}
	
}
package com.gof.bridge;

/**
 * 电脑类型
 * @author root
 *
 */
public class Competer {

	private  Brand brand;

	public Competer(Brand brand) {
		super();
		this.brand = brand;
	}
	
	public void sale() {
		brand.sale();
	}
}

class  Desktop   extends Competer{

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

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

class  Laptop  extends Competer{

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

	@Override
	public void sale() {
		super.sale();
		System.out.println("销售笔记本");
	}
	
}
package com.gof.bridge;

public class Client {
	public static void main(String[] args) {
	 Competer c = new Desktop(new Lenovo());
	 c.sale();
	  new Desktop(new Dell()).sale();
	}
}

 

 

 

© 著作权归作者所有

captainliu
粉丝 11
博文 106
码字总数 83678
作品 0
昌平
程序员
私信 提问
设计模式快速学习(八)委派模式

委派模式不是GOF23中的一员,但是在Spring中经常用到该模式,比如Registry等功能。 以现实生活中的老板委派员工干活来举例,比如说政府要求企业改革,老板将改革的任务发放给员工,老板出钱员...

FantJ
02/28
0
0
升级win10后无法使用桥接网络解决方法

win10系统安装完vmware workstation 12后发现没有网络连接里没有桥接网卡。 在开启虚机前选择桥接模式也会提示“无法将网络更改为桥接状态:没有未桥接的主机网络适配器”。 在设备管理器中确...

残夜寻茶香
2018/06/26
0
0
桥接模式

1.1桥接模式 (1)桥接模式定义 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 (2)应用桥接模式来解决的思路 仔细分析上面的示例,根据示例的功能要求,示例的变化具有两个纬度...

ciyo_yang
2017/07/09
0
0
Java设计模式之-桥接模式(Bridge)

在学习这个设计模式的时候,我是比较痛苦的。因为网上的很多教程虽然主题是桥(Bridge),但是一直在说如何拆分,如何解耦。直到我真正理解桥接模式之后,才发现那些教程都背离了这一设计模式...

Mock2052
2017/11/21
0
0
【白话设计模式九】桥接模式(Bridge)

白话设计模式 工厂模式 单例模式 【白话设计模式一】简单工厂模式(Simple Factory) 【白话设计模式二】外观模式(Facade) 【白话设计模式三】适配器模式(Adapter) 【白话设计模式四】单例模式...

陶邦仁
2016/03/29
320
0

没有更多内容

加载失败,请刷新页面

加载更多

gradle grovvy中的闭包

1. 无参数的闭包 //这b1就是一个闭包def b1={ println "hello b1"}//定义方法,包含闭包类型的参数def method1(Closure closure){closure()}//执行method1method1(b1) 执行结果 ...

edison_kwok
14分钟前
1
0
基于Spring Boot + Dubbo的全链路日志追踪(一)

一、 概要 当前公司后端整体架构为:Spring Boot + Dubbo。由于早期项目进度等原因,对日志这块没有统一的规范,基本上是每个项目自己管自己的日志。这也对后面的问题排查带来了很大的困难,...

明天以后
今天
6
0
安装fastdfs文件服务器步骤

1、安装libfastcommon wget https://github.com/happyfish100/libfastcommon/archive/master.zip 解压后安装 cd fastcommon-master ./make.sh ./make.sh install 2、安装 FastDFS,从sourcef......

lsjlgo
今天
3
0
MySQL 5.7 免安装版配置

下载地址:https://dev.mysql.com/downloads/mysql/ 安装步骤 1.下载zip解压到目录下 2.配置环境变量 新建系统变量:MYSQL_HOME,值:D:\DevelopmentTool\Mysql-5.7.26-winx64 修改path变量:...

华山猛男
今天
7
0
java map的遍历

//从大的角度可以分为两类Set<String> set=map.keySet();这里面还可以分为3类, 从set的角度来分 //Set<Map.Entry<String, String>> entery=map.entrySet(); public class Test { public sta......

南桥北木
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部