博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
桥接模式学习
阅读量:6301 次
发布时间:2019-06-22

本文共 2010 字,大约阅读时间需要 6 分钟。

hot3.png

桥接模式学习

桥接模式是一种结构型设计模式。它通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。

示例

在学习的时候,看到了一个很不错的例子,就拿来分享一下。

1.创建桥接实现接口

public interface DrawAPI {   public void drawCircle(int radius, int x, int y);}

2.创建接口实现类

创建实现了 DrawAPI 接口的实体桥接实现类。

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 +"]");   }}
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

public abstract class Shape {   protected DrawAPI drawAPI;   protected Shape(DrawAPI drawAPI){      this.drawAPI = drawAPI;   }   public abstract void draw();  }

4.创建抽象类的实例

创建实现了 Shape 接口的实体类。

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.使用

使用 ShapeDrawAPI 类画出不同颜色的圆。

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();   }}

桥接模式的优点

(1)实现了抽象和实现部分的分离

桥接模式分离了抽象部分和实现部分,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,分别定义接口,这有助于系统进行分层设计,从而产生更好的结构化系统。对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了。

(2)更好的可扩展性

由于桥接模式把抽象部分和实现部分分离了,从而分别定义接口,这就使得抽象部分和实现部分可以分别独立扩展,而不会相互影响,大大的提供了系统的可扩展性。

(3)可动态的切换实现

由于桥接模式实现了抽象和实现的分离,所以在实现桥接模式时,就可以实现动态的选择和使用具体的实现。

(4)实现细节对客户端透明,可以对用户隐藏实现细节。

桥接模式的缺点

(1)桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程。

(2)桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性。

转载于:https://my.oschina.net/u/3226414/blog/2209667

你可能感兴趣的文章
订单的子单表格设置颜色
查看>>
Office365 Exchange Hybrid 番外篇 ADFS后端SQL群集(一)
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
lvs fullnat部署手册(三)rs内核加载toa篇
查看>>
C++策略模式
查看>>
我的友情链接
查看>>
oracle表分区详解
查看>>
网络编程中常见结构体
查看>>
SSL/TLS原理详解
查看>>
Docker 自定义SSH服务镜像
查看>>
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
查看>>
configure: error: in `/root/httpd-2.2.11/srclib/apr': c
查看>>
CentOS7搭建Kubernetes-dashboard管理服务
查看>>
buildroot下查找外部编译器通过ext-toolchain-wrapper调用的参数
查看>>
MySQL Replication 主主配置详细说明
查看>>
Linux的任务调度
查看>>
在Android studio中添加jar包方法如下
查看>>
iframe 在ie下面总是弹出新窗口解决方法
查看>>
分享10款漂亮实用的CSS3按钮
查看>>
安装nginx 常见错误及 解决方法
查看>>