Bridge Mode
又称为柄体模式或接口模式
桥梁模式含有2个等级结构
1 由抽象化角色和修正抽象化角色组成的抽象化等级结构
2 由实现化角色和两个具体实现化角色所组成的实现化等级结构
桥梁模式设计的角色:
●抽象化角色:抽象化给出的定义,并保存一个对实现化对象的引用
●修正抽象化角色:扩展抽象化角色,改变和修正父类对抽象化的实现
●实现化角色:给出实现化角色的接口
●具体实现化角色:给出实现化角色对象接口的具体实现
依旧懒人盗图:
书上草草扫了一遍概念,完全没有弄明白他在讲的是什么东西,于是上网找相关的资料,这才有点眉目。
同样参照网上,采用画图的例子来说明桥梁模式是如何作用的
对照着上面的类图
Shape为抽象化角色,其中只有一个待实现的draw方法
public interface Shape {
void draw();
}
Circle和Square为Shape的实现,其中接收一个Drawing对象,决定采用何种绘图方式
public class Circle implements Shape{
private Drawing drawing;
public Circle(Drawing drawing){
this.drawing=drawing;
}
public void draw() {
System.out.println("Draw Circle");
drawing.drawCircle();
}
}
public class Square implements Shape{
private Drawing drawing;
public Square(Drawing drawing){
this.drawing=drawing;
}
public void draw() {
System.out.println("Draw Square");
drawing.drawSquare();
}
}
Drawing为实现化角色,提供了不同画法的接口
public interface Drawing {
void drawCircle();
void drawSquare();
}
Drawing1和Drawing2就是两种具体画法的实现
public class Drawing1 implements Drawing{
public void drawCircle() {
System.out.println("Drawing1_circle");
}
public void drawSquare() {
System.out.println("Drawing1_square");
}
}
public class Drawing2 implements Drawing{
public void drawCircle() {
System.out.println("Drawing2_circle");
}
public void drawSquare() {
System.out.println("Drawing2_square");
}
}
最终可以灵活的构建不同的绘图组合
public class BridgePattern {
public static void main(String[] args) {
Shape circle=new Circle(new Drawing1());
Shape circle2=new Circle(new Drawing2());
Shape square=new Square(new Drawing1());
Shape square2=new Square(new Drawing2());
circle.draw();
square.draw();
circle2.draw();
square2.draw();
}
}
最终可以得到输出结果:
Draw Circle
Drawing1_circle
Draw Square
Drawing1_square
Draw Circle
Drawing2_circle
Draw Square
Drawing2_square
使用桥梁模式的时机:
●一个系统需要在构件的抽象化角色和具体化角色之间增加灵活性,避免2个层次之间建立的静态联系
●设计要求实现化角色的任何改变不影响客户端
●一个构件有多于一个的抽象化角色和实现化角色,需要动态耦合
●抽象化角色和具体化角色需要独立变化
当只有一个具体实现化角色的情况下,抽象的实现化角色可以被取消,也就是退化的桥梁模式
参考资料链接:
http://www.iteye.com/topic/57178 其中还有对于JDBC,Hibernate的Dao的类比,非常生动
http://www.iteye.com/topic/137469 另外一篇桥梁模式的文章
- 大小: 5.5 KB
分享到:
相关推荐
AVR学习笔记是针对初学者的一系列教程,特别适合那些使用力天电子LT_mini_M16学习版的人。这个压缩包包含了一系列PDF文档,涵盖了从基础到进阶的多个实验,帮助用户逐步掌握AVR单片机的使用。 首先,我们来看"1.AVR...
在课堂教学过程中,教师要能针对学习内容,学生的经历、兴趣、知识水平、理解力等,设计出富有弹性的灵活多样的教学活动,营造宽松的课堂学习环境,创设自主学习、积极互动参与、探究的课堂教学模式,激发学生的学习...
Struts是Java Web开发中的一个经典框架,它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,极大地简化了Web应用的构建。ActionForm是Struts框架中一个关键组件,用于处理用户从视图层提交的...
本资源中的“csdn”可能指的是中国最大的开发者社区——CSDN上关于Golang的学习笔记。在这里,你可以找到详细的教程、实例代码、常见问题解答以及社区成员的经验分享,进一步提升你的Golang技能。 总的来说,Golang...
本篇将基于"《Eclipse插件开发学习笔记》(ch11-12)"的内容,深入讲解Eclipse插件开发中的两个关键概念——视图(Views)和操作(Actions)。 **第11章 操作(Actions)** 在Eclipse插件开发中,操作(Actions)是...
MVC(Model-View-Controller)是一种广泛应用于软件工程中的设计模式,尤其在Web应用开发中非常常见。它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的...
4. **MVC (Model-View-Controller)**:设计模式,将业务逻辑、数据和界面显示分离,提高代码可维护性。 5. **MySQL**:关系型数据库管理系统,用于存储用户信息、帖子内容、评论等数据。 二、系统功能模块 1. **...
3. MVC设计模式:Model-View-Controller是iOS应用开发中的常见设计模式,源码中的每个部分都应能对应到MVC的某一层。 4. 视图构建:通过Interface Builder或代码动态创建UI,理解Auto Layout和Size Classes的概念,...
此外,WPF的MVVM(Model-View-ViewModel)设计模式也可能被应用于该项目。在MVVM模式下,视图(View)负责呈现用户界面,模型(Model)封装业务逻辑和数据,而视图模型(ViewModel)作为两者之间的桥梁,处理数据...
描述中提到的"NDIS过滤驱动 小端口驱动 参考文章,DOC类型",暗示了我们有两个文档资料,分别是"NDISWDM驱动学习笔记.doc"和"NDIS驱动框架探究.doc",这两份文档可能是深入解析NDIS驱动技术,特别是小端口驱动和过滤...
下面,我们将深入探讨这个项目的知识点,包括其核心技术、设计模式以及实现原理。 首先,JavaWeb项目的核心技术主要包括Servlet、JSP和JavaBean。Servlet是JavaWeb应用中的服务器端组件,负责处理客户端请求和返回...
5. **笔记与心得(Notes & Insights)**:记录在编程过程中的一些思考和领悟,比如设计模式的理解、性能优化的经验等。这些笔记能帮助我们形成自己的编程哲学。 6. **版本控制(Version Control)**:为了确保代码...
《Linux驱动开发——基于ARM9的笔记》 在IT领域,Linux驱动开发是核心系统级编程的一部分,尤其在嵌入式系统中,如基于ARM9的硬件平台,它显得尤为重要。ARM9是一款广泛应用的微处理器架构,常用于嵌入式设备,如...
标题:“机器学习”——通往智能化世界的桥梁 在当今数字化时代,机器学习已经成为信息技术领域中最炙手可热的话题之一。它是一种人工智能的分支,其核心目标是让计算机系统能够从数据中自动学习,无需明确编程,...
然而,近20年来,这一领域得到了显著的扩展,不仅局限于单一字符的识别,而是转向了更广泛的书写模式识别,包括连续的手写文本、笔记、草图等。这种转变标志着手写识别技术进入了更加成熟和实用的阶段。 ### 工业界...
在这个特定的案例中,我们关注的是一个使用Kotlin编程语言实现的简单记事本应用——"Tudou Notepad"。Kotlin作为Google官方推荐的Android开发语言,以其简洁、安全和交互性强的特点深受开发者喜爱。下面,我们将详细...
【清华同方手写板驱动】是专门为清华同方荀子笔标准版设计的一款驱动程序,它是连接硬件设备——手写板与操作系统之间的桥梁,确保手写板在计算机上能够正常工作并提供良好的手写识别功能。这款驱动适用于那些希望在...
《使用Kotlin和MVVM构建最简单的笔记应用POC——SimpleToDo详解》 在现代移动应用开发中,Kotlin已经成为Android平台的首选编程语言,以其简洁的语法、强大的功能和安全特性深受开发者喜爱。本篇文章将深入探讨如何...