What Is Bridge Mode?

The bridging pattern is to separate the abstract part from its implementation part so that they can all change independently. It is an object structure pattern, also known as Handle and Body pattern or Interfce pattern.

In software systems, some types have changes in two or more dimensions due to their own logic, so how to deal with such "multi-dimensional changes"? How to use
[GOF95] Proposing
The following language codes are used to write the coordinates and radii of two different circles.
API1.circle at 1: 2 7.5
API2.circle at 5: 7 27.5

Java Bridge mode Java

  / ** "Implementor" * / interface DrawingAPI {public void drawCircle (double x, double y, double radius);} / ** "ConcreteImplementor" 1/2 * / class DrawingAPI1 implements DrawingAPI {public void drawCircle (double x, double y, double radius) {System.out.printf ("API1.circle at% f:% f radius% f \ n", x, y, radius);}} / ** "ConcreteImplementor" 2/2 * / class DrawingAPI2 implements DrawingAPI {public void drawCircle (double x, double y, double radius) {System.out.printf ("API2.circle at% f:% f radius% f \ n", x, y, radius);}} / ** "Abstraction" * / interface Shape {public void draw (); // low-level public void resizeByPercentage (double pct); // high-level} / ** "Refined Abstraction" * / class CircleShape implements Shape { private double x, y, radius; private DrawingAPI drawingAPI; public CircleShape (double x, double y, double radius, DrawingAPI drawingAPI) {this.x = x; this.y = y; this.radius = radius; this.dra  wingAPI = drawingAPI;} // low-level ie Implementation specific public void draw () {drawingAPI.drawCircle (x, y, radius);} // high-level ie Abstraction specific public void resizeByPercentage (double pct) {radius * = pct;}} / ** "Client" * / class BridgePattern {public static void main (String [] args) {Shape [] shapes = new Shape [2]; shapes [0] = new CircleShape (1, 2, 3 , new DrawingAPI1 ()); shapes [1] = new CircleShape (5, 7, 11, new DrawingAPI2 ()); for (Shape shape: shapes) {shape.resizeByPercentage (2.5); shape.draw ();}} }

C# Bridge mode C #

 using System; / ** "Implementor" * / interface IDrawingAPI {void DrawCircle (double x, double y, double radius);} / ** "ConcreteImplementor" 1/2 * / class DrawingAPI1: IDrawingAPI {public void DrawCircle (double x , double y, double radius) {System.Console.WriteLine ("API1.circle at {0}: {1} radius {2}", x, y, radius);}} / ** "ConcreteImplementor" 2/2 * / class DrawingAPI2: IDrawingAPI {public void DrawCircle (double x, double y, double radius) {System.Console.WriteLine ("API2.circle at {0}: {1} radius {2}", x, y, radius );}} / ** "Abstraction" * / interface IShape {void Draw (); // low-level (ie Implementation-specific) void ResizeByPercentage (double pct); // high-level (ie Abstraction-specific)} / ** "Refined Abstraction" * / class CircleShape: IShape {private double x, y, radius; private IDrawingAPI drawingAPI; public CircleShape (double x, double y, double radius, IDrawingAPI drawingAPI) {  this.x = x; this.y = y; this.radius = radius; this.drawingAPI = drawingAPI;} // low-level (ie Implementation-specific) public void Draw () {drawingAPI.DrawCircle (x, y, radius);} // high-level (ie Abstraction-specific) public void ResizeByPercentage (double pct) {radius * = pct;}} / ** "Client" * / class BridgePattern {public static void Main (string [] args ) {IShape [] shapes = new IShape [2]; shapes [0] = new CircleShape (1, 2, 3, new DrawingAPI1 ()); shapes [1] = new CircleShape (5, 7, 11, new DrawingAPI2 ( )); foreach (IShape shape in shapes) {shape.ResizeByPercentage (2.5); shape.Draw ();}}} 

IN OTHER LANGUAGES

Was this article helpful? Thanks for the feedback Thanks for the feedback

How can we help? How can we help?