当前位置:   article > 正文

Java Bridge Pattern(桥接模式)

java bridge pattern

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

优点: 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明。
缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

  1. 创建桥接实现接口。
  1. /**
  2. * 1. 创建桥接实现接口。
  3. * @author mazaiting
  4. */
  5. public interface DrawAPI {
  6. /**
  7. * 画圆
  8. * @param radius 半径
  9. * @param x 圆心横坐标
  10. * @param y 圆心纵坐标
  11. */
  12. void drawCircle(int radius, int x,int y);
  13. }
  1. 创建实现了 DrawAPI 接口的实体桥接实现类。
  1. /**
  2. * 2. 创建实现了 DrawAPI 接口的实体桥接实现类。
  3. * @author mazaiting
  4. */
  5. public class GreenCircle implements DrawAPI{
  6. public void drawCircle(int radius, int x, int y) {
  7. System.out.println("Drawing Circle[ color: green, radius: "
  8. + radius +", x: " +x+", y: "+ y +"]");
  9. }
  10. }
  11. /**
  12. * 2. 创建实现了 DrawAPI 接口的实体桥接实现类。
  13. * @author mazaiting
  14. */
  15. public class RedCircle implements DrawAPI{
  16. public void drawCircle(int radius, int x, int y) {
  17. System.out.println("Drawing Circle[ color: red, radius: "
  18. + radius +", x: " +x+", y: "+ y +"]");
  19. }
  20. }
  1. 使用 DrawAPI 接口创建抽象类 Shape。
  1. /**
  2. * 3. 使用 DrawAPI 接口创建抽象类 Shape。
  3. * @author mazaiting
  4. */
  5. public abstract class Shape {
  6. protected DrawAPI drawAPI;
  7. protected Shape(DrawAPI drawAPI) {
  8. this.drawAPI = drawAPI;
  9. }
  10. /**
  11. * 绘画
  12. */
  13. public abstract void draw();
  14. }
  1. 创建实现了 Shape 接口的实体类。
  1. /**
  2. * 4. 创建实现了 Shape 接口的实体类。
  3. * @author mazaiting
  4. */
  5. public class Circle extends Shape{
  6. private int x, y, radius;
  7. public Circle(int x,int y,int radius, DrawAPI drawAPI) {
  8. super(drawAPI);
  9. this.x = x;
  10. this.y = y;
  11. this.radius = radius;
  12. }
  13. @Override
  14. public void draw() {
  15. drawAPI.drawCircle(radius, x, y);
  16. }
  17. }
  1. 主函数验证
  1. public class Client {
  2. public static void main(String[] args) {
  3. Shape redCircle = new Circle(100, 100, 10, new RedCircle());
  4. Shape greenCircle = new Circle(100, 100, 10, new GreenCircle());
  5. redCircle.draw();
  6. greenCircle.draw();
  7. }
  8. }
  1. 打印结果
  1. Drawing Circle[ color: red, radius: 10, x: 100, y: 100]
  2. Drawing Circle[ color: green, radius: 10, x: 100, y: 100]
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/569016
推荐阅读
相关标签
  

闽ICP备14008679号