总目录:https://blog.csdn.net/qq_52681418/article/details/114828850
设计模式-桥接模式
桥接模式就是根据不同维度来桥接起来。
1.概念
比如你想画3种形状2种颜色的全部情况,传统模式下那么你可能会这样:
如果这时候你觉得再加一种颜色的比较好,那么你需要分别再画3种图形;
如果你想再加个梯形,那么你必须为每个梯形设置各种颜色。
使用桥接模式,我们可以将形状、颜色各视为一个维度,分离开:
这样一来2个维度自由组合就能出现各种颜色的图形了,上图中物体被分为2个维度:形状、颜色
2.实现
就以上面的图形为例:
- 创建形状抽象类并创建子类
- 创建颜色接口并创建颜色
1.创建形状
形状抽象类:
public abstract class Shape { public Color color; public void setColor(Color color){ this.color=color; } public abstract void showShape(); }
椭圆形:
public class ShapeOval extends Shape { public void showShape() { System.out.println("---椭圆形---"); super.color.showColor(); } }
正方形:
public class ShapeSquare extends Shape { public void showShape() { System.out.println("---正方形---"); super.color.showColor(); } }
三角形:
public class ShapeTriangle extends Shape { public void showShape() { System.out.println("---三角形---"); super.color.showColor(); } }
2.创建颜色
颜色接口:
public interface Color { void showColor(); }
绿色:
public class ColorGreen implements Color { public void showColor() { System.out.println("---绿色---"); } }
橘色:
public class ColorOrange implements Color { public void showColor() { System.out.println("---橘色---"); } }
3.构建物体
到现在位置颜色、形状构建完毕了,我们来将它们桥接起来,下面就以创建绿色正方形为例:
public class Application { public static void main(String[] args) { Shape shape=new ShapeSquare();//正方形 shape.setColor(new ColorGreen());//绿色 shape.showShape(); } }
总结:一个接口类、一个抽象类。抽象类中传入接口类,并提供自己的方法,抽象类子类在使用时可以使用父类的接口类的实现类对象。