ウィキペディアのこのブリッジ パターンの例にしばらく時間を費やしましたが、このブリッジ パターンが何を説明しようとしているのかまだわかりません。
インターフェイス DrawingAPI {
public void drawCircle(double x, double y, double radius);
}
/** "ConcreteImplementor" 1/2 */
クラス DrawingAPI1 は 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 */
クラス DrawingAPI2 は DrawingAPI を実装します {
public void drawCircle(double x, double y, double radius) {
System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius);
}
}
/** 「抽象化」 */
インターフェイス形状{
public void draw(); // 低レベル
public void resizeByPercentage(double pct); // 上級
}
/** 「洗練された抽象化」 */
クラスCircleShapeはShapeを実装します{
private double x、y、radius;
プライベート DrawingAPI drawingAPI;
public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) {
this.x = x; this.y = y; this.radius = 半径;
this.drawingAPI = drawingAPI;
}
// 低レベル、つまり実装固有
public void draw() {
drawingAPI.drawCircle(x, y, 半径);
}
// 高レベル、つまり抽象化固有
public void resizeByPercentage(double pct) {
半径 *= pct;
}
}
/** "クライアント" */
クラスメイン{
public static void main(String[] args) {
シェイプ[] シェイプ = 新しいシェイプ[2];
形状[0] = new CircleShape(1, 2, 3, new DrawingAPI1());
形状[1] = new CircleShape(5, 7, 11, new DrawingAPI2());
for (シェイプ shape : シェイプ) {
shape.resizeByPercentage(2.5);
shape.draw();
}
}
}
サブクラスの CircleShape コンストラクターは 4 つの引数を取り、その draw() メソッドで、最初の 3 つの引数が 4 番目の引数に渡されます。これは DrawingAPI の任意のサブクラスにすることができます。これは、ブリッジ パターンを使用すると柔軟性が高まるということでしょうか。この例からわかることは他にもありますか?
ありがとう!!!!