> 文章列表 > 第九章 桥接模式

第九章 桥接模式

第九章 桥接模式


文章目录

  • 前言
  • 一、桥接模式(Bridge)-基本介绍
    • 完整代码
    • Brand 手机接口,定义行为
    • Vivo 实现 Brand 接口
    • XiaoMi 实现 Brand 接口
    • Phone 抽象桥接类
    • FoldedPhone 实现桥接 (折叠样式手机)
    • UpRightPhone 实现桥接(直立样式手机)
    • Clint 测试桥接模式
    • ===========================================================
    • FlipPhone 新增实现桥接(翻盖样式手机)
    • 测试类测试
    • ===========================================================
  • 二、桥接模式在JDBC的源码剖析
  • 三、桥接模式的注意事项和细节
  • 四、桥接模式其它应用场景

前言

第九章 桥接模式
第九章 桥接模式
第九章 桥接模式


一、桥接模式(Bridge)-基本介绍

第九章 桥接模式
第九章 桥接模式

完整代码

Brand 手机接口,定义行为

package tanchishell.SJMS.bridge;//接口定义手机的行为
public interface Brand {void open();void close();void call();
}

Vivo 实现 Brand 接口

package tanchishell.SJMS.bridge;public class Vivo implements Brand{@Overridepublic void open() {System.out.println("vivo手机开机");}@Overridepublic void close() {System.out.println("vivo手机关机");}@Overridepublic void call() {System.out.println("vivo手机打电话");}
}

XiaoMi 实现 Brand 接口

package tanchishell.SJMS.bridge;public class XiaoMi implements Brand{@Overridepublic void open() {System.out.println("小米手机开机");}@Overridepublic void close() {System.out.println("小米手机关机");}@Overridepublic void call() {System.out.println("小米手机打电话");}
}

Phone 抽象桥接类

package tanchishell.SJMS.bridge;//抽象建立桥接
public abstract class Phone {//组合品牌private Brand brand;//构造器 抽象建立桥接public Phone(Brand brand) {super();this.brand = brand;}protected void open() {this.brand.open();}protected void close() {brand.close();}protected void call() {brand.call();}}

FoldedPhone 实现桥接 (折叠样式手机)


``package tanchishell.SJMS.bridge;//折叠样式手机 实现桥接
public class FoldedPhone extends Phone{//构造器public FoldedPhone(Brand brand) {super(brand);}public void open() {super.open();System.out.println(" 折叠样式手机 ");}public void close() {super.close();System.out.println(" 折叠样式手机 ");}public void call() {super.call();System.out.println(" 折叠样式手机 ");}
}

UpRightPhone 实现桥接(直立样式手机)

package tanchishell.SJMS.bridge;//直立式手机 实现桥接
public class UpRightPhone extends Phone{//构造器public UpRightPhone(Brand brand) {super(brand);}public void open() {super.open();System.out.println(" 直立样式手机 ");}public void close() {super.close();System.out.println(" 直立样式手机 ");}public void call() {super.call();System.out.println(" 直立样式手机 ");}
}

Clint 测试桥接模式

package tanchishell.SJMS.bridge;public class Clint {public static void main(String[] args) {//获取折叠式手机 (样式 + 品牌 )Phone phone1 = new FoldedPhone(new XiaoMi());phone1.open();phone1.call();phone1.close();System.out.println("=======================");Phone phone2 = new FoldedPhone(new Vivo());phone2.open();phone2.call();phone2.close();System.out.println("==============");UpRightPhone phone3 = new UpRightPhone(new XiaoMi());phone3.open();phone3.call();phone3.close();System.out.println("==============");UpRightPhone phone4 = new UpRightPhone(new Vivo());phone4.open();phone4.call();phone4.close();}
}输出小米手机开机折叠样式手机 
小米手机打电话折叠样式手机 
小米手机关机折叠样式手机 
=======================
vivo手机开机折叠样式手机 
vivo手机打电话折叠样式手机 
vivo手机关机折叠样式手机 
==============
小米手机开机直立样式手机 
小米手机打电话直立样式手机 
小米手机关机直立样式手机 
==============
vivo手机开机直立样式手机 
vivo手机打电话直立样式手机 
vivo手机关机直立样式手机 

===========================================================

FlipPhone 新增实现桥接(翻盖样式手机)

package tanchishell.SJMS.bridge;public class FlipPhone extends Phone{//构造函数public FlipPhone(Brand brand) {super(brand);}public void open() {super.open();System.out.println(" 翻盖样式手机 ");}public void close() {super.close();System.out.println(" 翻盖样式手机 ");}public void call() {super.call();System.out.println(" 翻盖样式手机 ");}
}

测试类测试

第九章 桥接模式
第九章 桥接模式

===========================================================

二、桥接模式在JDBC的源码剖析

第九章 桥接模式
第九章 桥接模式

三、桥接模式的注意事项和细节

第九章 桥接模式

四、桥接模式其它应用场景

第九章 桥接模式