EDL API双协议架构:SOAP与REST的选型实战与避坑指南
2026/9/30 9:43:33
桥接模式(Bridge Pattern) 是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。通过桥接模式,抽象层和实现层之间的耦合度被降低,从而使系统具有更好的灵活性和可扩展性。
示例场景:图形(圆形、矩形)为抽象维度;颜色(红色、蓝色)为实现维度。图形持有颜色的指针作为“桥”,图形和颜色可以各自新增,不需要写大量子类。
#include<iostream>usingnamespacestd;// Implementor:实现类接口(颜色)classColor{public:virtual~Color()=default;virtualvoidshowColor()=0;};// ConcreteImplementor 具体实现类:红色classRed:publicColor{public:voidshowColor()override{cout<<"红色";}};// ConcreteImplementor 具体实现类:蓝色classBlue:publicColor{public:voidshowColor()override{cout<<"蓝色";}};// Abstraction:抽象类(图形),持有实现层对象指针 —— 桥接核心classShape{protected:Color*color;public:Shape(Color*c):color(c){}virtual~Shape()=default;virtualvoiddraw()=0;};// RefinedAbstraction:扩展抽象类 - 圆形classCircle:publicShape{public:Circle(Color*c):Shape(c){}voiddraw()override{cout<<"绘制";color->showColor();cout<<"的圆形"<<endl;}};// RefinedAbstraction:扩展抽象类 - 矩形classRectangle:publicShape{public:Rectangle(Color*c):Shape(c){}voiddraw()override{cout<<"绘制";color->showColor();cout<<"的矩形"<<endl;}};// 客户端代码intmain(){Color*red=newRed();Color*blue=newBlue();Shape*s1=newCircle(red);Shape*s2=newCircle(blue);Shape*s3=newRectangle(red);Shape*s4=newRectangle(blue);s1->draw();s2->draw();s3->draw();s4->draw();deletes1;deletes2;deletes3;deletes4;deletered;deleteblue;return0;}绘制红色的圆形 绘制蓝色的圆形 绘制红色的矩形 绘制蓝色的矩形// Implementor 实现接口:颜色interfaceColor{voidshowColor();}// 具体实现:红色classRedimplementsColor{@OverridepublicvoidshowColor(){System.out.print("红色");}}// 具体实现:蓝色classBlueimplementsColor{@OverridepublicvoidshowColor(){System.out.print("蓝色");}}// Abstraction 抽象类:图形abstractclassShape{protectedColorcolor;publicShape(Colorc){this.color=c;}publicabstractvoiddraw();}// RefinedAbstraction 扩展抽象:圆形classCircleextendsShape{publicCircle(Colorc){super(c);}@Overridepublicvoiddraw(){System.out.print("绘制");color.showColor();System.out.println("的圆形");}}// RefinedAbstraction 扩展抽象:矩形classRectangleextendsShape{publicRectangle(Colorc){super(c);}@Overridepublicvoiddraw(){System.out.print("绘制");color.showColor();System.out.println("的矩形");}}// 客户端publicclassBridgeDemo{publicstaticvoidmain(String[]args){Colorred=newRed();Colorblue=newBlue();Shapes1=newCircle(red);Shapes2=newCircle(blue);Shapes3=newRectangle(red);Shapes4=newRectangle(blue);s1.draw();s2.draw();s3.draw();s4.draw();}}对比提示:适配器重在“转换接口”;桥接重在“分离维度,持续扩展”。