桥接模式
桥接模式是设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。
桥接模式有两个角色,一个是主类,一个是被桥接者,主类构造函数里传入被桥接者,这样主类可以调用被桥接者,而被桥接者可以承载各种变化,从而分离开来,各自独立变化。
桥接模式如果是两个维度变化的话,可以当成两个维度的变化,一个是主类作为纵向维度,被桥接者作为横向维度。
例如给图形添加各种颜色,图形是主类,子类有圆形、长方形、正方形,颜色是被桥接者,红黄绿各种颜色等。
代码示例
public abstract class Shape {
Color color;
public void setColor(Color color) {
this.color = color;
}
public abstract void draw();
}
public class Circle extends Shape{
public void draw() {
color.bepaint("圆形");
}
}
public class Rectangle extends Shape{
public void draw() {
color.bepaint("长方形");
}
}
public class Square extends Shape{
public void draw() {
color.bepaint("正方形");
}
}
public interface Color {
public void bepaint(String shape);
}
public class White implements Color{
public void bepaint(String shape) {
System.out.println("白色的" + shape);
}
}
public class Gray implements Color{
public void bepaint(String shape) {
System.out.println("灰色的" + shape);
}
}
public class Black implements Color{
public void bepaint(String shape) {
System.out.println("黑色的" + shape);
}
}
public class Client {
public static void main(String[] args) {
//白色
Color white = new White();
//正方形
Shape square = new Square();
//白色的正方形
square.setColor(white);
square.draw();
//长方形
Shape rectange = new Rectangle();
rectange.setColor(white);
rectange.draw();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!