桥接模式

桥接模式是设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。

桥接模式有两个角色,一个是主类,一个是被桥接者,主类构造函数里传入被桥接者,这样主类可以调用被桥接者,而被桥接者可以承载各种变化,从而分离开来,各自独立变化。

桥接模式如果是两个维度变化的话,可以当成两个维度的变化,一个是主类作为纵向维度,被桥接者作为横向维度。

 例如给图形添加各种颜色,图形是主类,子类有圆形、长方形、正方形,颜色是被桥接者,红黄绿各种颜色等。

 

代码示例

 

public abstract class Shape {
Color color;

public void setColor(Color color) {
this.color = color;
}

public abstract void draw();
}

 

public class Circle extends Shape{

public void draw() {
color.bepaint("圆形");
}
}

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();
}
}

 

posted @   求简君  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示