设计模式--桥接模式
来源:互联网 发布:万网 域名备案 编辑:程序博客网 时间:2024/06/06 08:42
桥接模式(Bridge Pattern)
桥接模式主要作用把抽象与实现化解耦,使得二者可以独立变化。大类划分为结构型模式,通过提供抽象与实现直接的桥接结构,来实现二者的解耦。
这种模式需要一个一个作为桥接的接口,使得实体类的功能独立于该接口的实现类。这两种类型的类可被结构化改变而互不影响。
介绍
意图:将抽象部分与实现部分分离,使它们都可以独立的变化。
应用场景:1. 一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免两个层次之间建立静态的继承联系,通过桥接模式可以使他们在抽象层建立起关联关系。2. 对于不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式更为适用。3. 一个类存在两个独立的维度,且这两个维度都需要扩展。
优点:1. 抽象与实现的分离。2. 优秀的扩展能力。3. 实现细节对客户透明。
缺点:1. 桥接模式的引入会增加系统的理解与设计难度。由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
注意事项:桥接模式尤其适用于两个独立变化的维度。
实现
我们有一个作为桥接实现的DrawAPI接口和实现了DrawAPI接口的实体类RedCircle、GreenCircle。Shape是一个抽象类,将使用DrawAPI的对象。BridgePatternDemo,我们的演示类使用Shape类来画出不同颜色的圆。
步骤 1
创建桥接实现接口。 DrawAPI.java
public interface DrawAPI { public void drawCircle(int radius, int x, int y);}
步骤 2
创建实现了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 +"]"); }}
步骤 3
使用DrawAPI接口创建抽象类Shape。 Shape.java
public abstract class Shape { protected DrawAPI drawAPI; protected Shape(DrawAPI drawAPI){ this.drawAPI = drawAPI; } public abstract void draw(); }
步骤 4
创建实现了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); }}
步骤 5
使用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(); }}
步骤 6
验证输出。
Drawing Circle[ color: red, radius: 10, x: 100, 100]Drawing Circle[ color: green, radius: 10, x: 100, 100]
- 设计模式----桥接模式
- 设计模式---桥接模式
- 设计模式:桥接模式
- 设计模式 桥接模式
- 设计模式 - 桥接模式
- 设计模式--桥接模式
- 设计模式--桥接模式
- 设计模式 - 桥接模式
- 设计模式-桥接模式
- 设计模式 - 桥接模式
- 设计模式 - 桥接模式
- 【设计模式-桥接模式】
- 设计模式:桥接模式
- 【设计模式】----桥接模式
- 【设计模式】桥接模式
- 设计模式--桥接模式
- 设计模式-桥接模式
- 设计模式:桥接模式
- Excel导入导出工具类
- openwrt开启Samba作为共享中心 win7如何访问linux samba服务器
- Tomcat性能调优方案
- 函数指针的正常使用,函数指针作为函数参数使用,函数指针作为函数参数使用
- 【已解决】1103:Incorrect table name '' [ SQL语句 ] : SHOW COLUMNS FROM ``
- 设计模式--桥接模式
- 上传第三方jar包到maven远程仓库nexus
- storm从入门到精通 第四节 拓扑的并发
- USACO FEB 2002 CowCycling(奶牛玩具车队赛)
- js 获取浏览信息 及常见浏览器处理
- 最长完美子序列
- spring mvc redirect 重定向 跳转并传递参数 && mvc:view-controller直接转发页面
- androidhttp请求json数据缓存设计
- 植物大战僵尸