三、桥接模式
桥接模式(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
优点:
举个例子:绘画不同颜色的各种图像,画不同的形状和涂颜色,便是两个不同的功能,但两者又相互联系,在画完形状后需要涂颜色,但颜色和形状有使多种多样的,此时就可以采用桥接设计模式,将两者的抽象化与实现化解耦,形状和颜色可以独立变化。
public interface ColorApi {
public void drawCircle();
}
public class ReqColor implements ColorApi {
@Override
public void drawCircle() {
System.out.println("开始涂红色!");
}
}
public class GreenColor implements ColorApi {
@Override
public void drawCircle() {
System.out.println("开始涂绿色!");
}
}
- 定义形状的接口
public interface ShapeApi {
//画形状
void draw();
//画形状并涂颜色
void drawShapeAndsColor();
}
public abstract class ShapeAbstract implements ShapeApi {
public ColorApi colorApi;
public ShapeAbstract(ColorApi colorApi) {
this.colorApi = colorApi;
}
@Override
public void drawShapeAndsColor() {
draw();
colorApi.drawCircle();
}
}
- 定义圆形的实例
public class Circle extends ShapeAbstract {
public Circle(ColorApi colorApi) {
super(colorApi);
}
@Override
public void draw() {
System.out.println("开始画圆形!");
}
}
public class Rectangle extends ShapeAbstract {
public Rectangle(ColorApi colorApi) {
super(colorApi);
}
@Override
public void draw() {
System.out.println("开始画矩形");
}
}
public class demo {
public static void main(String[] args) {
ShapeApi shapeReq = new Circle(new ReqColor());
shapeReq.drawShapeAndsColor();
ShapeApi shapeGreen = new Circle(new GreenColor());
shapeGreen.drawShapeAndsColor();
ShapeApi rectangle = new Rectangle(new GreenColor());
rectangle.drawShapeAndsColor();
}
}
上面可以看出,可以灵活的定义形状和颜色的组合,并且他们两个都可以独立变化,添加新的形状只需,建立新的类并实现形状接口,添加颜色也是如此,极大的提高的系统的可扩展性和可维护型。
原文地址:https://blog.csdn.net/weixin_65777087/article/details/134743725
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_28792.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。