设计模式-桥接模式

总目录:https://blog.csdn.net/qq_52681418/article/details/114828850

设计模式-桥接模式

桥接模式就是根据不同维度来桥接起来。

1.概念

比如你想画3种形状2种颜色的全部情况,传统模式下那么你可能会这样:

在这里插入图片描述
如果这时候你觉得再加一种颜色的比较好,那么你需要分别再画3种图形;
如果你想再加个梯形,那么你必须为每个梯形设置各种颜色。

使用桥接模式,我们可以将形状、颜色各视为一个维度,分离开:

在这里插入图片描述
这样一来2个维度自由组合就能出现各种颜色的图形了,上图中物体被分为2个维度:形状、颜色

2.实现

就以上面的图形为例:

  • 创建形状抽象类并创建子类
  • 创建颜色接口并创建颜色

1.创建形状

形状抽象类:

public abstract class Shape {

   public Color color;

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

   public abstract void showShape();
}

椭圆形:

public class ShapeOval extends Shape {

   public void showShape() {
       System.out.println("---椭圆形---");
       super.color.showColor();
   }
}

正方形:

public class ShapeSquare extends Shape {

   public void showShape() {
       System.out.println("---正方形---");
       super.color.showColor();
   }
}

三角形:

public class ShapeTriangle extends Shape {

   public void showShape() {
       System.out.println("---三角形---");
       super.color.showColor();
   }
}

2.创建颜色

颜色接口:

public interface Color {
   void showColor();
}

绿色:

public class ColorGreen implements Color {
   public void showColor() {
       System.out.println("---绿色---");
   }
}

橘色:

public class ColorOrange implements Color {
   public void showColor() {
       System.out.println("---橘色---");
   }
}

3.构建物体

到现在位置颜色、形状构建完毕了,我们来将它们桥接起来,下面就以创建绿色正方形为例:

public class Application {

   public static void main(String[] args) {

       Shape shape=new ShapeSquare();//正方形
       shape.setColor(new ColorGreen());//绿色
       shape.showShape();
   }
}

总结:一个接口类、一个抽象类。抽象类中传入接口类,并提供自己的方法,抽象类子类在使用时可以使用父类的接口类的实现类对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值