桥接模式
定义
如果一个对象有两种或两种以上的分类,且每一种分类易变化,这样其中一种分类属性可采用接口的方式进行添加。这种采用抽象部分和实现部分分离的方式的模式为桥接模式。
举例
要绘制图形对象,对于一个图形有形状和颜色两种分类,且这分类易变化。传统方式绘制:圆型,三角形;红色,绿色,这四种分类属性需要创建四个对象,圆红,圆绿,三角形红,三角形绿。这时如果新增加一种颜色,我们需要增加紫,我们需要增加图形圆紫,三角形紫。如果形状很多,且颜色容易变化,这样新增会非常麻烦。这时可以采用将颜色属性独立出来,作为一个可以变化的接口属性去添加。
代码实现
首先对于易变化的颜色接口抽象出来备用
颜色抽象接口
public interface IColor {
String getColor();
}
定义红色实现类
public class Red implements IColor {
public String getColor() {
return "红色";
}
}
定义绿色实现类
public class green implements IColor {
public String getColor() {
return "绿色";
}
}
接下来定义易变化的形状属性,并实现图形的绘制
形状抽象接口
public interface IShape {
void draw();
}
绘制圆型
public class DrawRound implements IShape {
public IColor icolor;
public setColor(IColor icolor) {
this.icolor = icolor;
}
public void draw() {
System.out.println("绘制"+icolor.getColor()+"圆型");
}
}
绘制三角形
public class DrawTriangle implements IShape {
public IColor icolor;
public setColor(IColor icolor) {
this.icolor = icolor;
}
public void draw() {
System.out.println("绘制"+icolor.getColor()+"三角形");
}
}
调用
public class User {
private void drawTest() {
DrawRound round = new DrawRound();
round.setColor(new Red());
round.draw();
DrawTriangle triangle = new DrawTriangle();
triangle.setColor(new green());
triangle.draw();
}
}