桥接模式设计画笔的代码
时间: 2024-05-07 09:16:04 浏览: 54
下面是一个简单的桥接模式设计画笔的代码示例:
```java
// 定义实现化角色
interface DrawingAPI {
void drawCircle(double x, double y, double radius);
}
// 定义具体实现化角色
class DrawingAPI1 implements DrawingAPI {
@Override
public void drawCircle(double x, double y, double radius) {
System.out.printf("API1.circle at (%.2f, %.2f) with radius %.2f\n", x, y, radius);
}
}
class DrawingAPI2 implements DrawingAPI {
@Override
public void drawCircle(double x, double y, double radius) {
System.out.printf("API2.circle at (%.2f, %.2f) with radius %.2f\n", x, y, radius);
}
}
// 定义抽象化角色
abstract class Shape {
protected DrawingAPI drawingAPI;
protected Shape(DrawingAPI drawingAPI) {
this.drawingAPI = drawingAPI;
}
public abstract void draw();
}
// 定义扩展抽象化角色
class Circle extends Shape {
private double x, y, radius;
public Circle(double x, double y, double radius, DrawingAPI drawingAPI) {
super(drawingAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
@Override
public void draw() {
drawingAPI.drawCircle(x, y, radius);
}
}
// 客户端代码
public class BridgePatternDemo {
public static void main(String[] args) {
Shape circle1 = new Circle(1, 2, 3, new DrawingAPI1());
Shape circle2 = new Circle(3, 2, 1, new DrawingAPI2());
circle1.draw();
circle2.draw();
}
}
```
在上面的代码中,`DrawingAPI` 是实现化角色,定义了画圆的方法。`DrawingAPI1` 和 `DrawingAPI2` 是具体实现化角色,实现了 `DrawingAPI` 接口。`Shape` 是抽象化角色,它有一个成员变量 `drawingAPI`,表示它所用的实现化角色。`Circle` 是扩展抽象化角色,它继承了 `Shape`,并实现了 `draw` 方法,调用 `drawingAPI` 的 `drawCircle` 方法。在客户端代码中,分别创建了 `Circle` 对象,并传入不同的实现化角色,从而实现了画圆的功能。
阅读全文