结构型模式:桥接模式
桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。
桥接模式将继承关系转化成关联关系(一个维度持有另一个维度的引用),它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。
实现系统可能有多个角度分类,每一种角度都可能变化,
那么把这种多角度分类给分离出来让他们独立变化,减少他们之间耦合。
桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化,这就是桥接模式的用意。
模式场景我们就采用哪个画图的。其UML结构图如下
package bridge;
/**
* 品牌
*/
public interface Brand {
void sale();
}
package bridge;
public class AppleBrand implements Brand {
@Override
public void sale() {
System.out.print("苹果品牌");
}
}
package bridge;
public class ASUSBrand implements Brand {
@Override
public void sale() {
System.out.print("华硕品牌");
}
}
package bridge;
public class DellBrand implements Brand {
@Override
public void sale() {
System.out.print("戴尔品牌");
}
}
package bridge;
public class Computer {
private Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
public void sale() {
brand.sale();
}
}
package bridge;
public class BookComputer extends Computer {
public BookComputer(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("笔记本在销售");
}
}
package bridge;
public class DeskComputer extends Computer {
public DeskComputer(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("台式机在销售");
}
}
package bridge;
public class Test {
public static void main(String[] args) {
Computer AsusDeskComputer = new DeskComputer(new ASUSBrand());
AsusDeskComputer.sale();
Computer DellBookComputer = new BookComputer(new DellBrand());
DellBookComputer.sale();
}
}
结果:
华硕品牌台式机在销售
戴尔品牌笔记本在销售
桥接模式总结:
桥接模式使用场景:
结构型模式:桥接模式相关推荐
- Java设计模式之结构型:桥接模式
一.什么是桥接模式: 桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯,桥接模式的作用就是为被分离的抽象部分和实现部分搭桥.在现实生活中一个物品在搭配不同的配件时会产生不同的动作和结果, ...
- 设计模式(18):结构型-享元模式(Flyweight)
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...
- 设计模式之结构型(4)-桥接模式(Bridge)
(一)定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化.(将一个对象多维度的变化分离) ① 桥接模式主要用意是为了实现抽象部分与实现部分脱耦,使它们各自可以独立变化. ② 在开发过程中通常会 ...
- 【设计模式·结构型】桥接模式Bridge Pattern
目的 该模式用于分离抽象与实现,并且抽象与实现可以独立变化 应用场景 (1)希望抽象和实现之间没有固定的绑定关系,不同抽象接口和实现可以组合和扩充,程序运行时动态选择.切换具体实现 (2)类层次结构, ...
- 【设计模式自习室】结构型:组合模式 Composite
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...
- VMware虚拟机三种网络模式详解之Bridged(桥接模式)
VMware虚拟机三种网络模式详解 Bridged(桥接模式) 由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好 ...
- JAVA设计模式详解(六)----------状态模式
各位朋友,本次LZ分享的是状态模式,在这之前,恳请LZ解释一下,由于最近公司事情多,比较忙,所以导致更新速度稍微慢了些(哦,往后LZ会越来越忙=.=). 状态模式,又称状态对象模式(Pattern o ...
- 设计模式详解(四)--------建造者模式
一.定义 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式. 二.使用范围 1.创建一个复杂的对象,他有多个不同的模块组成,其中有些模块不会改变, ...
- 《精通Python设计模式》学习结构型之MVC模式
这个就不需要多评论了, 哪个主流的PYTHON的WEB框架都有这些模式实现哈. quotes = ('A man is not complete until he is married. Then h ...
- 设计模式详解(五)——建造者模式
一.场景问题 大家很多人应该都玩过LOL(英雄联盟)这款游戏,博主从S4赛季一直玩到现在,可以说这块游戏陪伴了我整个大学生涯.正好现在S10入围赛已经快接近尾声,即将到精彩的小组赛了.当前这篇文章不是 ...
最新文章
- 计算几何题中的英语生词
- bind安装配置以及应用
- UML中关联,聚合,组合的区别及C++实现
- mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成
- Python:self理解
- java l1 l2缓存,Java 两级缓存框架
- ASCII码从小到大排序(字典序)
- 有好事?卡巴斯基推出免费杀毒软件
- idea创建jsp项目与JDBC连接数据库
- 计算机vb输入框函数,VB基本函数大全
- http web服务器
- 计蒜客 青出于蓝胜于蓝(dfs序+树状数组)
- 阿里、腾讯、字节、京东、美团、百度......薪资职级大比拼
- docker搭建mongodb高可用集群
- 蓄力-利用POI进行excel的导入导出(包含图片)
- 阿里Java程序员分享自己的职业规划,希望对你有所启发
- 【蓝桥杯嵌入式】【STM32】14_CT117E_EXA蓝桥杯嵌入式扩展板硬件资源一览及其驱动编写
- 随便学学Python-day10-函数的进阶
- 技术人总有想写文章的冲动却无疾而终?4个小Tips帮你快速上手~
- JAVA查询近12个月的数据并进行统计
热门文章
- 高考题(可作为试讲资料)
- AS问题解决系列1—Unable to execute DX错误
- 【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!
- Web 单点登录系统
- 番茄花园该打,反垄断更该升级
- boost智能指针之shared_ptr,scoped_ptr,intrusive_ptr,weak_ptr源码简析
- How to install python packages
- deepin--解决QQ时间与系统时间不一致
- 一段把mp4中的音频提取并保存在原目录的python脚本
- cimage和gdi绘图效率比较_GDI+和GDI绘图性能对比实验