Java设计模式——桥接模式(Bridge Pattern)
来源:互联网 发布:做淘宝需要什么设备 编辑:程序博客网 时间:2024/06/05 20:13
桥接模式的定义
将抽象部分与实现部分分离,使它们都可以独立的变化。
桥接模式结构详解
桥接模式主要包含如下几个角色:
Abstraction:抽象类。 RefinedAbstraction:扩充抽象类。 Implementor:实现类接口。 ConcreteImplementor:具体实现类 。
桥接模式的结构图
桥接模式的代码示例
创建一个桥接实现的 DrawAPI 接口和实现了 DrawAPI 接口的实体类 RedCircle、GreenCircle。Shape 是一个抽象类,将使用 DrawAPI 的对象。BridgePatternDemo,我们的演示类使用 Shape 类来画出不同颜色的圆。
代码结构图
第一步:创建桥接实现接口。
DrawAPI.java
public interface DrawAPI { public void drawCircle(int radius, int x, int y);}
第二步:创建实现了 DrawAPI 接口的实体桥接实现类。
RedCircle.java
public class RedCircle implements DrawAPI { @Override public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: red, radius: " + radius +", x: " +x+", "+ y +"]"); }}
GreenCircle.java
public class GreenCircle implements DrawAPI { @Override public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: green, radius: " + radius +", x: " +x+", "+ y +"]"); }}
第三步:使用 DrawAPI 接口创建抽象类 Shape。
Shape.java
public abstract class Shape { protected DrawAPI drawAPI; protected Shape(DrawAPI drawAPI){ this.drawAPI = drawAPI; } public abstract void draw(); }
第四步:创建实现了 Shape 接口的实体类。
Circle.java
public class Circle extends Shape { private int x, y, radius; public Circle(int x, int y, int radius, DrawAPI drawAPI) { super(drawAPI); this.x = x; this.y = y; this.radius = radius; } public void draw() { drawAPI.drawCircle(radius,x,y); }}
第五步:使用 Shape 和 DrawAPI 类画出不同颜色的圆。
BridgePatternDemo.java
public class BridgePatternDemo { public static void main(String[] args) { Shape redCircle = new Circle(100,100, 10, new RedCircle()); Shape greenCircle = new Circle(100,100, 10, new GreenCircle()); redCircle.draw(); greenCircle.draw(); }}
验证输出
Drawing Circle[ color: red, radius: 10, x: 100, 100]Drawing Circle[ color: green, radius: 10, x: 100, 100]
桥接模式的优缺点
优点
1、抽象和实现的分离。
2、优秀的扩展能力。
3、实现细节对客户透明。
缺点
桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
桥接模式适用场景
1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
3、一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
阅读全文
0 0
- java设计模式——桥接模式(Bridge Pattern)
- (转)设计模式-----桥接模式(Bridge Pattern)-Java
- Java设计模式——桥接模式(Bridge Pattern)
- java设计模式---Bridge Pattern---桥接模式
- JAVA设计模式之 桥接模式【Bridge Pattern】
- Java设计模式之--桥接模式(bridge pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式--桥接模式(bridge pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-桥接模式(Bridge Pattern)
- 简单认识TCP/IP传输协议
- 译-设计模式-结构模式之Decorator
- 操作系统学习笔记(1) 进程
- 【笔记】《WebGL编程指南》学习-第3章绘制和变换三角形(1-绘制多个点)
- LeetCode---513. Find Bottom Left Tree Value(DFS)
- Java设计模式——桥接模式(Bridge Pattern)
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛——Minimum(I题)
- 写程序学ML:决策树算法原理及实现(一)
- 1073. 多选题常见计分法(20)
- LODOP WEB项目打印功能
- 多线程(二)--同步及死锁
- ST下载提示No Cortex-M SW Device Found
- Go语言开发常见陷阱,你遇到过几个?
- 链接