当前位置: 首页 > news >正文

设计模式之桥接模式

1.桥接模式概念

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

2.桥接模式的关键组成部分

1)抽象 (Abstraction): 定义使用实现部分的接口

2)细化抽象 (Refined Abstraction): 扩展抽象类,为实现部分定义新的接口。

3)实现者 (Implementor): 定义实现部分的接口。

4)具体实现者 (Concrete Implementors): 实现实现者接口,并提供具体的实现方法。

3.举个栗子

以车的类型和颜色为例:车的类型可以有很多中(小汽车,卡车,拖拉机等等),汽车的颜色也可以有很多中(红色,白色,黑色等)。

4.代码实现

1)ColorType接口

package org.xiji.brige;public interface CarType {/**** 获取车类型*/String getType();
}

2)LorryCar实现类

package org.xiji.brige;/*** 货车*/
public class LorryCar implements CarType{@Overridepublic String getType() {return "货车";}
}

3)BusCar实现类

package org.xiji.brige;/*** 客车*/
public class BusCar implements CarType{@Overridepublic String getType() {return "客车";}
}

4)CarColor实现类

package org.xiji.brige;/*** 车抽象类*/
public abstract class CarColor {/*** 车类型*/protected CarType carType;public CarColor(CarType carType) {this.carType = carType;}/**** 抽象方法*/public abstract String getCarColor();/*** 介绍汽车*/public void introduceCar(){System.out.println("这是"+carType.getType()+"是"+getCarColor());}
}

5)RedCar实现类

package org.xiji.brige;/*** 红色*/
public class RedCar extends CarColor{public RedCar(CarType carType) {super(carType);}@Overridepublic String getCarColor() {return "红色";}
}

6)BlackCar实现类

package org.xiji.brige;/*** 黑色*/
public class BlackCar extends CarColor{public BlackCar(CarType carType) {super(carType);}@Overridepublic String getCarColor() {return "黑色";}
}

7)桥接测试类

package org.xiji.brige;/*** 桥接模式测试类*/
public class BridgeMain {public static void main(String[] args) {//创建车的类型//货车LorryCar lorryCar = new LorryCar();//客车BusCar busCar = new BusCar();//创建红色客车System.out.println("=================================");RedCar redBusCar = new RedCar(busCar);redBusCar.introduceCar();System.out.println("=================================");//创建红色的货车System.out.println("=================================");RedCar redLorryCar = new RedCar(lorryCar);redLorryCar.introduceCar();System.out.println("=================================");//创建黑色的客车System.out.println("=================================");BlackCar blackBusCar = new BlackCar(busCar);blackBusCar.introduceCar();System.out.println("=================================");//创建黑色的货车System.out.println("=================================");BlackCar blackLorryCar = new BlackCar(lorryCar);blackLorryCar.introduceCar();System.out.println("=================================");}
}

8)测试结果


http://www.mrgr.cn/news/16179.html

相关文章:

  • P1494 [国家集训队] 小 Z 的袜子(分块,莫队算法)
  • 分类任务实现模型集成代码模版
  • 【每日一题】【想通后的诈骗题】Wakey Wakey 牛客挑战赛76 A题 C++
  • 探索全能型AI与专业型AI的未来趋势
  • Simulink代码生成:关系运算与逻辑运算
  • 2024大模型学习:机器学习在安全领域的应用|从大数据中识别潜在安全威胁
  • Netty 知识目录
  • 操作系统页面置换: 先进先出算法(FIFO)
  • Unet改进11:在不同位置添加MLCA||轻量级的混合本地信道注意机制
  • 书生浦语实训营-InternVL 多模态模型部署微调实践
  • 设计模式-UML建模语言面向对象的SOLIDLC
  • 绥芬河外贸公司俄语网站建设方案
  • Java基于大模型实现客服系统
  • JS中【事件】长篇详解与代码示例
  • 小程序全局挂载对像
  • swupdate-签名验证
  • “喂饭级”教程!建筑AI生成设计Stable Diffusion看这篇就够了!
  • PyCharm下载安装教程(详细步骤)附激活码!
  • 简化理解:Tomcat 和 Servlet 规范
  • AIGC大师秘籍:六步法打造精准文字提示词