设计模式(十五)——桥接模式
1.描述
将桥接部分与他的实现部分分离,是他们都可以独立的变化。
2.模式的使用
·抽象(Abstraction):是一个抽象类,该抽象类含有Implementor的声明,即维护一个Implementor类型对象。
·实现者(Implementor):实现者是一个接口或抽象类,该接口(抽象类)中的方法不定与Abstraction类中的方法一致。Implementor接口(抽象类)负责定义基本操作,而Abstraction类负责定义基于这些操作的较高层次操作。
·细化抽象(Refined Abstraction):细化抽象是抽象的一个一个子类,该子类重写(覆盖)抽象中的抽象方法时,再给出一些必要操作后,将委托所维护的Implementor类型对象调用相应方法。
·具体实现者(Concrete Implementor):具体实现者是实现(扩展)Implementor接口(抽象类)的类。
3.使用情景
·不想让抽象和某些重要的实现代码是固定的绑定关系,这部分实现可在运行时动态实现。
·抽象和实现者都可以继承的方式独立地扩展而不受影响,程序运行期间可能需要动态的将一个抽象子类的实例与一个实现者的子类实例进行组合。
·希望对实现者层次代码的修改对抽象层不产生影响,及即抽象层的代码不用重新编译,反之亦然。
4.优点
·桥接模式分离实现与抽象,使抽象和实现可以独立扩展。
·满足“开——闭”原则
5.UML图
6案例
中央电视台有CCTV5和CCTV6,一个负责制作体育节目,一个负责之多电影节目。使用桥接模式将抽象与实现分离。
1 package 桥接模式; 2 3 import java.util.ArrayList; 4 5 public class test1 { 6 7 public static void main(String[] args) { 8 9 } 10 11 } 12 13 /* 14 * 抽象 15 */ 16 abstract class CCTV{ 17 Program programMaker; 18 public abstract void makeProgram(); 19 } 20 21 /* 22 * 实现者 23 */ 24 interface Program{ 25 public ArrayList<String> makeTVProgram(); 26 } 27 28 /* 29 * 具体实现者 30 */ 31 class AthleticProgram implements Program{ 32 ArrayList<String> content; 33 AthleticProgram(){ 34 this.content = new ArrayList<String>(); 35 } 36 public ArrayList<String> makeTVProgram() { 37 content.clear(); 38 content.add("巴西足球比赛"); 39 content.add("比赛结束"); 40 return content; 41 } 42 43 } 44 45 /* 46 * 具体实现者 47 */ 48 class FilmProgram implements Program{ 49 ArrayList<String> content; 50 FilmProgram(){ 51 this.content = new ArrayList<String>(); 52 } 53 public ArrayList<String> makeTVProgram() { 54 content.clear(); 55 content.add("肖申克的救赎"); 56 return content; 57 } 58 59 } 60 61 /* 62 * 细化抽象 63 */ 64 class CCTV5 extends CCTV{ 65 ArrayList<String> content; 66 CCTV5(Program programMaker){ 67 this.programMaker = programMaker; 68 this.content = new ArrayList<String>(); 69 } 70 @Override 71 public void makeProgram() { 72 content = programMaker.makeTVProgram(); 73 74 } 75 76 }
大概就是这么个意思,不运行了。
和策略模式思想相近。
转载于:https://www.cnblogs.com/cxy2016/p/7670312.html
设计模式(十五)——桥接模式相关推荐
- 设计模式之外观模式php,php设计模式(十五)外观模式
外观模式又叫门面模式: 现在都是模块化开发了: 开发中很多时候都是在使用各种扩展包: 或者在外观模式中我们叫做子系统: 外观模式的作用就是减少子系统之间的耦合: 降低子系统的使用难度: 我们举个栗子: ...
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...
- python的编程模式-实例解析Python设计模式编程之桥接模式的运用
这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #encoding=utf-8 # #by panda ...
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用 ...
- 简易理解设计模式之:桥接模式——穿衣服经典案例2
介绍: 桥接模式属于结构型模式.它的定义为:将抽象部分与实现部分分离,使它们都可以独立的变化. 类图: Abstraction(抽象化角色):抽象部分,保持对实现部分对象的引用,抽象部分中的方法需要调 ...
- Java设计模式(十五):桥接设计模式
1. 应用场景 假如你正在为一个新的人体工学且友好的电视遥控器编程.你要使用好的OO技能,让所有的遥控器都基于相同的抽象,对此抽象又做出不同的实现-每部不同型号的电视机都有自己的遥控器的实现. 2. ...
- Java实现23种设计模式(五):桥接模式
二十三种设计模式分类 一.概述 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度.桥接模式主要想实 ...
- Net设计模式实例之桥接模式( Bridge Pattern)(4)
3.客户端代码<?XML:NAMESPACE PREFIX = O /> static void <?XML:NAMESPACE PREFIX = ST2 />Main(str ...
- 从王者荣耀看设计模式(十七.桥接模式)
从王者荣耀看设计模式(桥接模式) 一.简介 王者荣耀是一款RGB游戏,玩家操控自己选择的英雄进行竞赛.在游戏正式开始前,玩家在挑选想要操作的英雄的同时,也会挑选适合该英雄的召唤师技能.召唤师技能是通用 ...
- 设计模式笔记之七 (桥接模式)
桥接模式 桥接模式就是把影响事物对象的多个因素抽象出来从而使两者解偶,那么就能动态的加载变化的因素. 好吧,这个定义很抽象,我们还是来聊下具体的事物. 最近我们实验室因为一系列的设计模式改进,所以竞争 ...
最新文章
- 数据院跨学科交叉人才培养走出国门——中德交换生项目首位社科学子赴德国哥廷根大学交流学习
- 关于Uri.Segments 属性的理解
- a4b5笔记本大小对比_天津订做笔记本*价格多少【广通印务】
- [从零开始]HelloWorld——第一个应用程序
- linux vnc 安装目录,Linux环境VNC服务安装、配置与使用(图)
- TDDFT计算软件Octopus学习笔记(七): 二维材料计算(WS2)
- 盘点下半年EI国际会议,值得收藏!
- Can't update 分支名 has no tracked branch
- MySQL和数据库总结
- 重装系统后计算机无法启动,Win7纯净版系统重装后无法开机的原因和解决方法...
- ajax post forbidden,解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式
- aruco字典如DICT_4X4_50含义
- 已嵌入微信公众号内的小图聊天机器人介绍和使用说明
- 截图软件:Snipaste for Mac中文(2.6.4beta官方)
- PADS Logic图文教程(一):栅格的设置和显示
- matlab中s_cplot,matlab系统模型建立和动态特性研究分析实验.docx
- Rust初学者环境搭建(非Viatual Studio ,自定义安装目录)
- C语言实验——矩阵下三角元素之和 (sdut oj)
- 游戏建模用到哪些软件?零基础如何学习游戏建模?
- HCNP-Cloud云计算认证--学习