ウィキペディアのこのブリッジ パターンの例にしばらく時間を費やしましたが、このブリッジ パターンが何を説明しようとしているのかまだわかりません。
インターフェイス 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 の任意のサブクラスにすることができます。これは、ブリッジ パターンを使用すると柔軟性が高まるということでしょうか。この例からわかることは他にもありますか?
ありがとう!!!!