版权声明:本文为博主原创文章,未经博主允许不得转载。个人公众号:百草疯茂 https://blog.csdn.net/wang_pengyu/article/details/84873355
理解的不是很深 。用到在看。
package com.test.DPs.JieGou.Bridge;
/**
* 结构型:Bridge-桥接 桥接:作用面为 对象
*
* 用途:将抽象部分与它的实现部分分离,使它们都可以独立的变化。
*/
interface DrawAPI{
public void drawCircle(int radius, int x, int y);
}
class RedCircle implements DrawAPI{
@Override
public void drawCircle(int radius, int x, int y){
System.out.println("Drawing Circle[ color: red, radius:"+radius
+ ", x:"+x+", y:"+y+"]");
}
}
class GreenCircle implements DrawAPI{
@Override
public void drawCircle(int radius, int x, int y){
System.out.println("Drawing Circle[ color: green, radius:"+radius
+ ", x:"+x+", y:"+y+"]");
}
}
abstract class Shape{
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
/**
* Circle类将DrawAPI和Shape类进行了桥接。
* Shepe类给出了参数,DrawAPI依据参数进行了实现。
* 理解:桥接两边分别是:抽象和重载
*/
class Circle extends Shape{
private int x, y, radius;
public Circle(int x, int y, int radius, DrawAPI drawAPI){
super(drawAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
public void draw(){
drawAPI.drawCircle(radius, x, y);
}
}
//客户端使用代码
/*
Shape redCircle = new Circle(100,100, 10, new RedCircle());
Shape greenCircle = new Circle(100,100, 10, new GreenCircle());
redCircle.draw();
greenCircle.draw()
*/