Java设计模式(七)桥接模式

news/2024/10/18 5:57:57/

一、概述

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。桥接模式通过将抽象和实现进行解耦,让它们可以独立地扩展和变化,同时可以在运行时动态地将不同的抽象和实现组合起来。

二、代码

下面是一个简单的桥接模式的代码示例,假设我们要绘制不同颜色的圆形和矩形:

//1.实现部分的接口
public interface Color {//涂色方法void applyColor();
}
//2.具体实现部分:绿色
public class GreenColor implements Color {@Overridepublic void applyColor() {System.out.println("涂上绿色");}
}
//3.具体实现部分:红色
public class RedColor implements Color {@Overridepublic void applyColor() {System.out.println("涂上红色");}
}
//4.抽象部分接口
public abstract class Shape {protected Color color;public Shape(Color color) {this.color = color;}//绘制形状的方法abstract void draw();
}
//5.具体抽象部分:圆形
public class Circle extends Shape {public Circle(Color color) {super(color);}@Overridevoid draw() {System.out.print("画个圆.");color.applyColor();}
}
//6.具体抽象部分:矩形
public class Rectangle extends Shape {public Rectangle(Color color) {super(color);}@Overridevoid draw() {System.out.print("画个矩形.");color.applyColor();}
}
//7.测试类
public class Test {public static void main(String[] args) {// 创建不同颜色的形状对象Shape redCircle = new Circle(new RedColor());Shape greenRectangle = new Rectangle(new GreenColor());// 绘制不同颜色的形状redCircle.draw();greenRectangle.draw();}
}

在上述示例中,我们通过桥接模式将抽象部分(Shape)和实现部分(Color)进行解耦。Color 接口定义了颜色的应用方法 applyColor()RedColorGreenColor 是具体的颜色实现类。

Shape 是抽象部分接口,它包含一个对 Color 对象的引用,并定义了一个抽象的绘制方法 draw()CircleRectangle 是具体的抽象部分实现类,它们继承自 Shape 接口并实现了 draw() 方法,在方法中调用了 Color 对象的 applyColor() 方法。

在测试类中,我们创建了不同颜色的形状对象,并通过调用 draw() 方法来绘制形状。由于抽象部分和实现部分已经解耦,我们可以在运行时动态地将不同的抽象和实现组合起来,实现不同颜色的形状绘制。


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

相关文章

遗传算法(GA)

理论: 遗传算法是一种通过模拟生物进化的方式来寻找最优解的一类优化算法。这种算法主要依靠遗传、突变和自然选择的机制对问题求解进行高效的迭代搜索。 遗传算法的基本思想是将问题的解表示成一个个个体,然后根据适应度函数的定义来评估每个个体的适…

【设计模式】建造者模式

【设计模式】建造者模式 参考资料: 重学 Java 设计模式:实战建造者模式「各项装修物料组合套餐选配场景」 建造者模式——链式调用 五分钟彻底了解建造者模式 文章目录 【设计模式】建造者模式一、建造者模式介绍1.1、定义1.2、角色概述 二、案例场景模…

Acid burn(★★)

运行程序 先是弹出一个neg 然后是真正的程序界面 有一个输入Serial和Name的判断 还有一个只输入Serial的判断 查壳 没有壳,是Delphi程序 先除去一个Neg 找到Neg弹出的程序,在程序头下个断,运行程序,此时栈顶是调用此功能的…

Gradle使用

下载Gradle Gradle Distributions 配置环境变量 测试是否成功 cmd输入gradle -v 在.gradle目录下创建一个init.gradle allprojects { repositories { maven { url file:///D:/maven/myRepository} ## 这里是本地maven仓库地址,没有就会依次向下设置的地址寻…

将ssh发布密钥添加到服务器的ssh授权密钥中,但是为什么我仍然无法ssh登录到此服务器?

我已经将ssh发布密钥添加到服务器的ssh授权密钥中,但是为什么我仍然无法ssh登录到此服务器? 即使将ssh公钥添加到服务器的授权密钥中,您也可能无法通过SSH登录到服务器,这有几个原因: 1.服务器的authorized_keys文件的权限不正确…

微信小程序商城搭建--后端+前端+小程序端

介绍: 前端技术:React、AntdesignPro、umi、JavaScript、ES6、TypeScript、 小程序 后端技术:Springboot、Mybatis、Spring、Mysql 软件架构: 后端采用Springboot搭配前端React进行开发,完成用户管理、轮播图管理、…

django:django2配置websocket

源码地址: https://gitee.com/liuhaizhang/django2-configuring-websockethttps://gitee.com/liuhaizhang/django2-configuring-websocket python3.9.0 django2.2.1 channels2.2.0 项目结构: test_websocket_django2 -chat -home -test_websocket_dja…

用ascii画十二生肖

十二生肖,也称为“十二属相”,是中国传统的生肖分类法,它将时间和人的出生年份联系起来,以十二种动物为代表来区分不同的年份和人的性格特征。这十二种动物分别为鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗和猪,每个…