桥接模式---汽车导航

news/2024/11/16 22:35:50/

汽车品牌内置导航仪,我们希望实现,每个品牌的导航仪都可以在任何一个牌子的汽车上安装并启动。汽车品牌有两个:宝马、奔驰。导航仪有三个牌子:神行者、北斗、高德

AbstractVehicleBrand.java

package car;public abstract class AbstractVehicleBrand {  public abstract void install(INavigator n);  public abstract void open();  
}

INavigator.java

package car;public interface INavigator {  public void work();  
}

GDNavigator.java

package car;public class GDNavigator implements INavigator {@Overridepublic void work() {// TODO Auto-generated method stubSystem.out.println("---开启高德导航!");  }}

BDNavigato.java

package car;public class BDNavigator implements INavigator {@Overridepublic void work() {  System.out.println("---开启北斗导航!");  } }

SXZNavigator.java

package car;public class SXZNavigator implements INavigator {@Overridepublic void work() {// TODO Auto-generated method stubSystem.out.println("---开启神行者导航!");  }}

BCWVehicle.java

package car;public class BCWVehicle extends AbstractVehicleBrand {private  INavigator navigator = null; String name="奔驰";@Overridepublic void install(INavigator n) {// TODO Auto-generated method stubnavigator = n;}@Overridepublic void open() {// TODO Auto-generated method stubSystem.err.println(name);navigator.work();}}

BMWVehicle.java

package car;public class BMWVehicle extends AbstractVehicleBrand {private  INavigator navigator = null; String name="宝马";@Overridepublic void install(INavigator n) {// TODO Auto-generated method stubnavigator = n;}@Overridepublic void open() {// TODO Auto-generated method stubSystem.err.println(name);navigator.work();}

Client.java

package car;public class Client {public static void main(String[] args) {// TODO Auto-generated method stubINavigator a1=new GDNavigator();AbstractVehicleBrand bmw=new BMWVehicle();bmw.install(a1);bmw.open();INavigator a2=new BDNavigator();AbstractVehicleBrand bc=new BCWVehicle();bc.install(a2);bc.open();}}

运行截图:


http://www.ppmy.cn/news/146755.html

相关文章

高压放大器和示波器的关系是什么

高压放大器和示波器是电子工程领域中常见的两种设备,它们在实际的电路设计、测试和分析中都扮演着重要的角色。下面安泰电子将从定义、功能、应用场景等方面为您介绍高压放大器和示波器的关系。 图:ATA-7000系列高压放大器 一、高压放大器的定义及功能 高…

hutool文件导出

hutool文件导出 需求:管理员设置会议,参加会议会根据管理员设置的会议要求,用户参加会议填写相关数据,并且生成一个动态的excel数据并导出 示例: 每场都可以自定义报名字段 根据需求与前端约定 字段名称(n…

Vue3-01-Vue3 新特性及环境搭建

Vue.js是一种被广泛使用的JavaScript框架,用于构建用户界面和单页面应用。Vue3是其最新的主要版本,引入了许多新特性并做了一些改进。 一、Vue3 性能提升 1. Object.defineProperty VS Proxy Vue2 和 Vue3 在数据响应性系统的实现上采用了不同的方式&…

深度学习 - 53.Bert 简介与 Keras-Bert 常用示例

目录 一.引言 二.Bert 简介 1.Embedding Layer 2.Encoder layer 3.Pre-training 与 Fine-Tuning 三.Keras-Bert 常用 Demo 1.获取预训练模型 2.加载预训练模型 3.Fill Text 4.IsCorrelation 5.Get Embedding 6.完整代码 四. Fine-Tuning 五.Bert VS OpenAI GPT …

T100报错

今天T100系统老是报错 提示 查无此笔 资料 后来 调试发现是 insert xrcd表报错 把语句拉出来 拿到数据库后 提示空间不足,发给运维好了。加了表空间就好了 查询表空间SQL SELECT a.tablespace_name "表空间名称", total / (1024 * 1024) "表空间…

Java、储物柜难题

一个学校有100个储物柜和100个学生。所有的储物柜在上学的第一天都是关着的。随着学生进入,第一个学生S1打开了每个柜子。第二个学生S2从第二个柜子L2开始,关闭相隔1的柜子。学生3(S3)从第三个柜子L3改变每第三个柜子的状态&#…

LE5010

LE5010是凌思微出的集成BLE功能芯片 参考文档:https://ls-ble-sdk.readthedocs.io/zh/latest/index.html 参数 32位Cortex-M0内核,最高频率64M,最大64KB SRAM,最大512KB flash。支持BLE5.0/5.1,支持MESH。 低功耗功…

数据可视化 立体柱状图 柱状图

立体柱状图 1、首先通过标签方式直接引入构建好的 echarts 文件 <!DOCTYPE html> <html> <head><meta charset"utf-8"><!-- 引入 ECharts 文件 --><script src"echarts.min.js"></script> </head> <…