💬定义
桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。
个人理解:两个独立的维度,可以用桥接模式来实现解耦。
😀例子
源自(https://www.runoob.com/w3cnote/bridge-pattern2.html 他们的栗子有个小错误=.=)
维度1:形状(矩形、正方形、圆形。。。)
维度2:颜色(白色、黑色、灰色。。。)
📝首先定义一个形状的抽象类,让颜色作为一个它的属性。
public abstract class Shape {
Color color;
public void setColor(Color color) {
this.color = color;
}
public abstract void draw();
}
📝长方形
public class Rectangle extends Shape{
public void draw() {
color.bepaint("长方形");
}
}
📝正方形
public class Square extends Shape{
public void draw() {
color.bepaint("正方形");
}
}
📝颜色的接口
public interface Color {
public void bepaint(String shape);
}
📝白色
public class White implements Color{
public void bepaint(String shape) {
System.out.println("白色的" + shape);
}
}
📝灰色
public class Gray implements Color{
public void bepaint(String shape) {
System.out.println("灰色的" + shape);
}
}
📝黑色
public class Black implements Color{
public void bepaint(String shape) {
System.out.println("黑色的" + shape);
}
}
📝测试
public class Client {
public static void main(String[] args) {
//白色
Color white = new White();
//正方形
Shape square = new Square();
//白色的正方形
square.setColor(white);
square.draw();
//长方形
Shape rectange = new Rectangle();
rectange.setColor(white);
rectange.draw();
}
}
🎥 输出:
白色的正方形
白色的长方形
👻灵魂
颜色作为形状的属性,实现两个类之间的联系。