桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
UML图
1.创建桥接实现接口
public interface DrawAPI{
public void drawCircle(int radius,int x,int y);
}
2.创建实现了DrawAPI接口的桥接实现类
public class RedCircle implements DrawAPI{
@Override
public void drawCircle(int radius,int x,int y){
System.out.println("Drwaing Circle Color :red,radius:"+radius+",X:"+x+",y:"+y);
}
}
public class GreenCircle implements DrawAPI{
@Override
public void drawCircle(int radius,int x,int y){
System.out.println("Drawing Circle Color
:green,radius:"+",x:"+x+",y:"+y);
}
}
3.使用DrawAPI接口创建抽象类Shape
public abstract class Shape{
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
4.创建实现了Shape接口的实体类
public 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);
}
}
5.使用
public class BridgePatternDemo{
public static void main(String[] args){
Shape redCircle = new Circle(1,1,100,new RedCircle());
Shape greenCircle = new Circle(1,1,100,new GreenCircle());
redCircle.draw();
greenCircle.draw();
}
}