我花了一些时间在维基百科的这个桥模式示例上,但是,我仍然不明白这个桥模式试图解释什么。
接口绘图API { 公共无效drawCircle(双x,双y,双半径); } /** "ConcreteImplementor" 1/2 */ 类 DrawingAPI1 实现 DrawingAPI { 公共无效drawCircle(双x,双y,双半径){ System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius); } } /** "ConcreteImplementor" 2/2 */ 类 DrawingAPI2 实现 DrawingAPI { 公共无效drawCircle(双x,双y,双半径){ System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius); } } /** “抽象” */ 界面形状{ 公共无效绘制();// 低级 public void resizeByPercentage(double pct); // 高水平 } /** “精炼抽象” */ 类 CircleShape 实现形状 { 私人双 x,y,半径; 私有绘图API绘图API; public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) { 这个.x = x; 这个.y = y; this.radius = 半径; this.drawingAPI = 绘图API; } // 低级,即特定于实现 公共无效绘制(){ 绘图API.drawCircle(x, y, 半径); } // 高级别的,即抽象特定的 公共无效resizeByPercentage(双百分比){ 半径 *= pct; } } /** “客户” */ 类主{ 公共静态无效主要(字符串[]参数){ 形状 [] 形状 = 新形状 [2]; 形状[0] = new CircleShape(1, 2, 3, new DrawingAPI1()); 形状[1] = new CircleShape(5, 7, 11, new DrawingAPI2()); 对于(形状形状:形状){ shape.resizeByPercentage(2.5); 形状.draw(); } } }
子类 CircleShape 构造函数接受 4 个参数,在它的 draw() 方法中,前 3 个参数被传递给第四个参数,它可以是来自 DrawingAPI 的任何子类。那么这是否意味着使用桥接模式可以增加灵活性呢?这个例子还能告诉我们更多的事情吗?
谢谢!!!!