私はこのブリッジパターンの例をwikipediaから費やしていましたが、このブリッジパターンが何を説明しようとしているのかまだ分かりません。ブリッジパターンの例
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.drawingAPI = drawingAPI; } // low-level i.e. Implementation specific public void draw() { drawingAPI.drawCircle(x, y, radius); } // high-level i.e. Abstraction specific public void resizeByPercentage(double pct) { radius *= pct; } } /** "Client" */ class Main { 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(); } } }
サブクラスCircleShapeコンストラクタがdraw()メソッドでは、4つの引数をとり、第3引数はDrawingAPIから任意のサブクラスであることができる第4引数に渡されます。 これは、ブリッジパターンを使用すると柔軟性を高めることができるということですか? この例で私たちに伝えることができるものがありますか?
ありがとう!!!!
おかげで、私は今のパターンのより明確な見解を持っています。 パターンに関するGoogleの時間が終わってから、パターンの良いリンクが見つかりました http://www.allappforum.com/java_design_patterns/creational_patterns.htm ブリッジパターンについての簡単な例があります。 Switchというインターフェースがあり、2つのサブクラスはBulbとFanと呼ばれ、それぞれのサブクラスはSwitch.Aの独自の実装を持っています。 – user200340