Bridge 桥梁模式 桥接模式
简介
将【抽象部分】(Abstraction,人)与【实现部分】(Implementor,人穿的衣服)分离,使它们都可以独立的变化。【业务抽象角色】引用【业务实现角色】,或者说【业务抽象角色】的部分实现是由【业务实现角色】完成的Bridge模式基于【类的最小设计原则】,通过使用封装,聚合以及继承等行为来【让不同的类承担不同的责任】。它的主要特点是把【抽象】与【行为实现】分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。可以这么理解,【抽象】是一个事物的本身的特征,【行为】是一个事物可以做的动作,特征是相对独享的,行为是可以共享的。作用:解耦。适用性1、你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻,实现部分应可以选择或者切换。2、类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。3、对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。4、想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。作用:将抽象部分与其实现部分分离,使它们都可以独立地变化JDK中体现:java.util.logging中的Handler和FormatterAWT (It provides an abstraction layer which maps onto the native OS the windowing support.)JDBC
演示
抽象部分,Abstraction,业务抽象角色(人)是一个事物的本身的特征,public abstract class Person {public Clothing clothing;public String type;public abstract void dress();}class Man extends Person {public Man() {this.type = "男人";}@Overridepublic void dress() {if (clothing != null) clothing.personDressCloth(this);}}class Lady extends Person {public Lady() {this.type = "女人";}@Overridepublic void dress() {if (clothing != null) clothing.personDressCloth(this);}}实现部分,Implementor,业务实现角色(穿衣服)是一个事物(人)可以做的动作,在程序运行时刻,实现部分可以选择或者切换public abstract class Clothing {public abstract void personDressCloth(Person person);//人穿衣服}class Trouser extends Clothing {@Overridepublic void personDressCloth(Person person) {if (person != null) System.out.println(person.type + "穿裤子");}}class Jacket extends Clothing {@Overridepublic void personDressCloth(Person person) {if (person != null) System.out.println(person.type + "穿马甲");}}public class Test {public static void main(String[] args) {Person man = new Man();Person lady = new Lady();Clothing jacket = new Jacket();Clothing trouser = new Trouser();jacket.personDressCloth(man);trouser.personDressCloth(man);System.out.println("\n");jacket.personDressCloth(lady);trouser.personDressCloth(lady);}}
附件列表
Bridge 桥梁模式 桥接模式的更多相关文章
- java设计模式--结构型模式--桥接模式
桥接模式 概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系. 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或 ...
- 提高C++编译速度-------pimpl 模式& 桥接模式(转)
pimpl 模式(Private Implementation),我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的所有源文件都要重新编译,这 ...
- [19/04/26-星期五] GOF23_结构型模式(桥接模式、组合模式)
一.桥接模式(bridge) 场景:商城系统中常见的商品分类,以电脑为例,首先想到使用多层继承结构. —— 台式机(联想台式机.戴尔台式机.神舟台式机) 电脑 ——笔记本(联想笔记本.戴尔笔记本 ...
- VMware网络连接模式——桥接模式、NAT模式以及仅主机模式的介绍和区别
在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...
- vmware三种网络模式:桥接模式|仅主机|NAT模式
VMware 网络模式 1. Bridged(桥接)桥接模式下,宿主机物理网卡(主机网卡)和虚拟网卡通过 VMnet0 虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,物理网卡和虚拟网卡 ...
- Vmare虚拟机网络连接方式桥接模式+桥接模式+主机模式
虚拟机网络连接模式 最近在学习虚拟机和计算机网络,在网上看了一些关于虚拟机网络连接方式的介绍 这篇文章写的不错:https://www.cnblogs.com/luxiaodai/p/9947343. ...
- 【编程思想】【设计模式】【结构模式Structural】桥梁模式/桥接模式bridge
Python版 https://github.com/faif/python-patterns/blob/master/structural/bridge.py #!/usr/bin/env pyth ...
- 桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
桥接模式Bridge Bridge 意为桥梁,桥接模式的作用就像桥梁一样,用于把两件事物连接起来 意图 将抽象部分与他的实现部分进行分离,使得他们都可以独立的发展. 意图解析 依赖倒置原 ...
- 【设计模式】结构型04桥接模式(Bridge Pattern)
学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html 桥接模式(Bridge Pattern) 桥接模式(Bridge patte ...
随机推荐
- iOS证书详解--再转
一.成员介绍1. Certification(证书)证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:1) Developer Certification(开发证书)安装在电脑上 ...
- BZOJ 3893 Cow Jog
Description The cows are out exercising their hooves again! There are \(N\) cows jogging on an infin ...
- About JavaScript
JavaScript Function, Constructor function, Plain Object (expression function, closure) Maintainable ...
- ARM Cortex M3系列GPIO口介绍(工作方式探讨)
一.Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图 从图中可以看出 ...
- Church encoding
In mathematics, Church encoding is a means of representing data and operators in the lambda calculus ...
- left join 、right join 、inner join和 full join的区别
内连接 INNER JOIN(等值连接):只显示两个表中联结字段相等的行.这个和用select查询多表是一样的效果,所以很少用到: 外连接:LEFT JOIN :以左表为基础,显示左表中的所 ...
- parted命令分区
http://soft.chinabyte.com/os/447/12439447.shtml http://blog.163.com/warking_xp/blog/static/103910320 ...
- 杂题 SPOJ MOBILE2 - Mobiles
MOBILE2 - Mobiles no tags You have been asked to buy a gift for your baby brother, Ike. However, yo ...
- HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)
Problem Description 在上一回,我们让你猜测海东集团用地的形状,你猜对了吗?不管结果如何,都没关系,下面我继续向大家讲解海东集团的发展情况: 在最初的两年里,HDU发展非常迅速,综合 ...
- Java Topology Suite (JTS)与空间数据模型
JTS是Java的处理地理数据的API,它提供以下功能: 实现了OGC关于简单要素SQL查询规范定义的空间数据模型 一个完整的.一致的.基本的二维空间算法的实现,包括二元运算(例如touch和over ...