网站优化站外链接怎么做,石家庄最新今天的消息,wordpress如何重置后台密码,宜宾网站制作公司文章目录 三、桥接模式 三、桥接模式
桥接模式#xff08;Bridge#xff09;是用于把抽象化与实现化解耦#xff0c;使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构#xff0c;来实现二者的解耦。 这种模式涉及到一个作为桥接的接口#xff0c;使得实体类… 文章目录 三、桥接模式 三、桥接模式
桥接模式Bridge是用于把抽象化与实现化解耦使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构来实现二者的解耦。 这种模式涉及到一个作为桥接的接口使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 优点
抽象和实现的分离。优秀的扩展能力。实现细节对客户透明。
举个例子绘画不同颜色的各种图像画不同的形状和涂颜色便是两个不同的功能但两者又相互联系在画完形状后需要涂颜色但颜色和形状有使多种多样的此时就可以采用桥接设计模式将两者的抽象化与实现化解耦形状和颜色可以独立变化。
下面使用程序演示下上面的例子
定义颜色的接口
public interface ColorApi {public void drawCircle();
}定义不同颜色的实现这里采用红色和绿色
public class ReqColor implements ColorApi {Overridepublic void drawCircle() {System.out.println(开始涂红色);}
}public class GreenColor implements ColorApi {Overridepublic 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;}Overridepublic void drawShapeAndsColor() {draw();colorApi.drawCircle();}
}定义圆形的实例
public class Circle extends ShapeAbstract {public Circle(ColorApi colorApi) {super(colorApi);}Overridepublic void draw() {System.out.println(开始画圆形);}
}定义矩形的实例
public class Rectangle extends ShapeAbstract {public Rectangle(ColorApi colorApi) {super(colorApi);}Overridepublic 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();}
}上面可以看出可以灵活的定义形状和颜色的组合并且他们两个都可以独立变化添加新的形状只需建立新的类并实现形状接口添加颜色也是如此极大的提高的系统的可扩展性和可维护型。