无锡网站建设seo,拼多多怎么开店,怎么做网站游戏,上海网站设计建设桥接模式#xff08;Bridge Pattern#xff09;是一种结构型设计模式#xff0c;它将抽象部分与实现部分分离#xff0c;使它们可以独立变化。桥接模式通过创
建一个桥接接口#xff0c;将抽象部分和实现部分连接起来#xff0c;从而实现两者的解耦。下面是一个详细的桥接… 桥接模式Bridge Pattern是一种结构型设计模式它将抽象部分与实现部分分离使它们可以独立变化。桥接模式通过创
建一个桥接接口将抽象部分和实现部分连接起来从而实现两者的解耦。下面是一个详细的桥接模式案例假设我们要设计一个图形绘制系统支持不同类型的图形如圆形、矩形和不同的绘制工具如画笔、画刷。
定义实现部分的接口 首先我们定义一个绘制工具的接口这个接口将作为桥接模式的实现部分。
// 绘制工具接口
public interface DrawingTool {void drawCircle(int radius, int x, int y);void drawRectangle(int width, int height, int x, int y);
}
实现具体的绘制工具 接下来我们实现具体的绘制工具如画笔和画刷。
// 画笔工具
public class Pen implements DrawingTool {Overridepublic void drawCircle(int radius, int x, int y) {System.out.println(用画笔绘制圆形半径: radius , 位置: ( x , y ));}Overridepublic void drawRectangle(int width, int height, int x, int y) {System.out.println(用画笔绘制矩形宽度: width , 高度: height , 位置: ( x , y ));}
}// 画刷工具
public class Brush implements DrawingTool {Overridepublic void drawCircle(int radius, int x, int y) {System.out.println(用画刷绘制圆形半径: radius , 位置: ( x , y ));}Overridepublic void drawRectangle(int width, int height, int x, int y) {System.out.println(用画刷绘制矩形宽度: width , 高度: height , 位置: ( x , y ));}
}
定义抽象部分的接口 接下来我们定义一个图形的抽象类这个抽象类将作为桥接模式的抽象部分。
// 图形抽象类
public abstract class Shape {protected DrawingTool drawingTool;public Shape(DrawingTool drawingTool) {this.drawingTool drawingTool;}public abstract void draw();
}
实现具体的图形 然后我们实现具体的图形如圆形和矩形。
// 圆形
public class Circle extends Shape {private int radius;private int x;private int y;public Circle(int radius, int x, int y, DrawingTool drawingTool) {super(drawingTool);this.radius radius;this.x x;this.y y;}Overridepublic void draw() {drawingTool.drawCircle(radius, x, y);}
}// 矩形
public class Rectangle extends Shape {private int width;private int height;private int x;private int y;public Rectangle(int width, int height, int x, int y, DrawingTool drawingTool) {super(drawingTool);this.width width;this.height height;this.x x;this.y y;}Overridepublic void draw() {drawingTool.drawRectangle(width, height, x, y);}
}
使用桥接模式 最后我们使用桥接模式来绘制图形。
public class BridgePatternDemo {public static void main(String[] args) {Shape circleWithPen new Circle(10, 50, 50, new Pen());circleWithPen.draw();Shape circleWithBrush new Circle(10, 50, 50, new Brush());circleWithBrush.draw();Shape rectangleWithPen new Rectangle(20, 30, 100, 100, new Pen());rectangleWithPen.draw();Shape rectangleWithBrush new Rectangle(20, 30, 100, 100, new Brush());rectangleWithBrush.draw();}
}