0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

桥接模式的目标与设计

冬至子 来源:全栈开发的码农 作者:全栈开发的码农 2023-06-01 14:29 次阅读

桥接模式的目标是使对象的抽象部分与实现部分分离,使之可以分别独立变化,以尽量避免产生耦合

下图以绘制圆形为例:圆形的颜色通过接口类DrawAPI及其2个实现类RedCircle以及GreenCircle实现;圆形的坐标以及半径通过抽象类及其扩展类实现,在实现draw()方法时,直接使用DrawAPI类中的相关对象的drawCircle方法。

图片

DrawAPI接口类:

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

RedCircle实现类:

package bridge;
public class RedCircle implements DrawAPI{
  @Override
  public void drawCircle(int radius, int x, int y) {
    System.out.println("画红色圆,半径"+radius+",坐标:x="+x+",y="+y);
  }
}

GreenCircle实现类:

package bridge;
public class GreenCircle implements DrawAPI{
  @Override
  public void drawCircle(int radius, int x, int y) {
    System.out.println("画绿色圆,半径"+radius+",坐标:x="+x+",y="+y);  
  }
}

Shape抽象类:

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

Circle扩展类:

package bridge;
public class Circle extends Shape{
  int x, y, radius;
  public Circle(DrawAPI drawAPI,int x,int y,int radius) {
    super(drawAPI);
    this.x=x;
    this.y=y;
    this.radius=radius;
  }
  @Override
  public void draw() {
    drawAPI.drawCircle(radius, x, y);
  }
}

主函数调用方式:

package main;
import bridge.*;
public class BridgePattern {
  public static void main(String[] args) {
    Shape redCircle =new Circle(new RedCircle(),10,10,5);
    Shape greenCircle = new Circle(new GreenCircle(),20,20,6);
    redCircle.draw();
    greenCircle.draw();
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 耦合器
    +关注

    关注

    8

    文章

    718

    浏览量

    59629
  • API接口
    +关注

    关注

    1

    文章

    82

    浏览量

    10426
收藏 人收藏

    评论

    相关推荐

    关于模式遇到的问题

    VMware使用模式,已经手动设置ip地址和主机ip同一网段,但是ifconfig显示的ip地址却和vmnet8(NAT)同一网段?怎么解决?
    发表于 10-16 15:06

    CentOS静态IP配置(模式

    [2018-08-26]-[CentOS]CentOS静态IP配置(模式
    发表于 05-12 08:27

    COM和CORBA的与应用

    根据CORBA规范,阐述了组件的体系结构和六种模型,并引申出八种方式,比较了各种
    发表于 02-27 16:07 29次下载
    COM和CORBA的<b class='flag-5'>桥</b><b class='flag-5'>接</b>与应用

    DS31256 HDLC控制器的配置步骤—模式

    DS31256 HDLC控制器的配置步骤—模式 本应用笔记提供了怎样配置模式下DS31
    发表于 04-21 14:59 1514次阅读
    DS31256 HDLC控制器的配置步骤—<b class='flag-5'>桥</b><b class='flag-5'>接</b><b class='flag-5'>模式</b>

    方式电路图

    方式电路图
    发表于 07-16 17:43 5011次阅读
    <b class='flag-5'>桥</b><b class='flag-5'>接</b>方式电路图

    车载功放的功能

    车载功放的功能              功能是指为增加输出功率而将车载功放
    发表于 01-04 11:10 3856次阅读

    网桥和,网桥和是什么意思

    网桥和,网桥和是什么意思 网桥(Bridge)也称桥接器,是连接两个局域网的存储转发设备,用它可以完成具有相同或相似体系
    发表于 03-20 16:03 1.3w次阅读

    D类放大器的方法

    式或全操作利用两个标准的半式通道形成一个浮动式系载输出。在
    发表于 07-14 15:34 1750次阅读
    D类放大器的<b class='flag-5'>桥</b><b class='flag-5'>接</b>方法

    多个路由器如何无线成一个网络 路由器教程

    多个路由器如何无线成一个网络 路由器教程
    发表于 09-28 09:25 1次下载

    设计模式结构性:模式

    模式不是将两个不相干的类链接,而是将一个需要多维度变化的类拆分成抽象部分和实现部分,并且在抽象层对两者做组合关联,是用组合的方式来解决继承的问题。
    的头像 发表于 06-08 10:49 757次阅读
    设计<b class='flag-5'>模式</b>结构性:<b class='flag-5'>桥</b><b class='flag-5'>接</b><b class='flag-5'>模式</b>

    远程网关模式实现同一局域网组网管理(Superlink)

    远程网关模式配置介绍及示例功能简述智联物联远程网关模式,是指电脑侧Superlink远程
    的头像 发表于 04-26 15:32 1068次阅读
    远程网关<b class='flag-5'>桥</b><b class='flag-5'>接</b><b class='flag-5'>模式</b>实现同一局域网组网管理(Superlink)

    模式应用场景

    1、什么是模式? Decouple an abstraction from its implementation so that the two can vary independently.
    的头像 发表于 10-09 14:30 1154次阅读
    <b class='flag-5'>桥</b><b class='flag-5'>接</b><b class='flag-5'>模式</b>应用场景

    无线和mesh组网哪个好?

    无线和Mesh组网都是用于扩展无线网络覆盖范围的技术,但它们的工作原理和应用场景有所不同。 无线接通常是一对一的连接,相对较容易设置和维护。它的优点在于简单性,适用于需要建立点对点连接的场景
    的头像 发表于 01-19 16:12 7435次阅读

    路由器路由器怎样 路由器接好还是中继好

    路由器和中继是常用的网络扩展方式,用于扩大网络覆盖范围,提供更好的网络连接。这两种方式在不同的场景下有着各自的优势,下面将详细介绍如何路由器,以及
    的头像 发表于 02-20 14:26 5031次阅读

    网络模式是什么? 网络模式和路由模式的区别

    网络模式是一种网络连接方式,它可以将多个设备连接在一起,使它们可以相互通信。在网络模式
    的头像 发表于 05-10 13:48 4022次阅读