桥接模式(Bridge)

1、概述 
桥接模式是一种结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式。也可描述为抽象化与实现化解耦,使得二者可以独立变化。
2、重点
核心思想是:将继承模式转化成关联关系,降低了类与类之间的耦合度。将两个角色之间的继承关系修改为关联关系,强关联改换成弱关联。
3、优缺点
优点
  • 分离抽象接口及其实现部分,降低了系统耦合度。
  • 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原来的系统。
  • 实现细节对客户不透明,可以隐藏实现细节。
缺点
  • 桥接模式的引入会增加系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行编程。
4、场景
  •  一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
  • 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
  • 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
5、实例
桥梁模式在Java应用中一个非常典型的例子就是JDBC驱动器。JDBC为所有的关系型数据库提供一个通用的界面。一个应用系统动态的选择一个合适的驱动器,然后通过驱动器向数据库引擎发出指令。这个过程就是将抽象角色的行为委派给实现角色的过程。
本例也采用数据库连接的一个样例,系统开发中涉及到需要连接多个数据库的问题,假设系统需要同时连接oracle和mysql两种类型数据库:



public interface Driver {
public void connect ();
}

public class OracleDriver implements Driver {
@Override
public void connect () {
System . out . println ( "连接oracle。。。" );
}
}

public class MysqlDriver implements Driver {
@Override
public void connect () {
System . out . println ( "连接mysql。。。" );
}
}

public class Bridge {
private Driver driver ;
public Driver getDriver () {
return driver ;
}
public void setDriver ( Driver driver ) {
this . driver = driver ;
}
}

public class BridgeTest {
public static void main ( String [] args ) {
//oracle
Bridge oracleBridge = new Bridge ();
Driver oracleDriver = new OracleDriver ();
oracleBridge . setDriver ( oracleDriver );
oracleDriver . connect ();
//mysql
Bridge mysqlBridge = new Bridge ();
Driver mysqlDriver = new MysqlDriver ();
mysqlBridge . setDriver ( mysqlDriver );
mysqlDriver . connect ();
}
}

### 如何在 VMware 中配置和使用桥接网络模式 #### 安装与权限设置 为了确保能够成功配置桥接模式,在启动 VMware 之前应以管理员身份运行该程序。这一步骤能防止因权限不足而导致的配置失败[^2]。 #### 虚拟网络编辑器中的设置 通过菜单栏选择`编辑->虚拟网络编辑器`来访问网络选项。在此界面下可以看到多个用于不同类型的网络连接的适配器,其中 `VMnet0` 对应于桥接模式下的虚拟交换机。确认此接口已启用并与物理网卡关联,从而允许虚拟环境内的设备如同处于同一局域网中一样工作[^1]。 #### 卸载并重新安装协议 如果遇到无法切换至桥接模式的问题,则可能需要先卸载名为 "VMware Bridge Protocol" 的组件再尝试重启软件。完成上述操作之后再次进入虚拟网络编辑器调整为所需的桥接状态即可解决临时性的功能异常情况。 #### 验证MAC地址获取 一旦完成了以上步骤,进入到具体的Linux发行版实例内部(例如Ubuntu),可以通过命令行工具查询当前系统的硬件信息,特别是关注网卡所对应的 MAC 地址是否正确无误地被识别出来。对于 Ubuntu 来,可以利用 `ip addr` 命令来进行这项检查工作[^3]。 ```bash ip addr show ``` #### 测试连通性 最后一步是要验证新建立起来的网络链接是否有效运作。可以在宿主机操作系统里试着 ping 一下刚刚获得 IP 地址的目标机器;反过来也是一样——从客户 OS 发起同样的请求回传给外部世界。成功的响应意味着整个过程顺利完成,并且现在应该能够在两者之间自由传输数据包了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值