java设计模式之桥接模式
2022/2/1 17:39:19
本文主要是介绍java设计模式之桥接模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。
感觉听完上面的描述,没有几个人能够描述桥接模式到达怎么实现。
据我个人的理解,桥接模式一般用于适用于以下情况,某个类的子类都多个维度的变化,如果都分别实现,可能会造成子类的爆炸。
可以把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。
下面通过画笔这个例子,来解读一下桥接模式。
photoshop很多人都用过,画笔既可以用来画圆,也可以画方,既可以画红色,也可以画蓝色。
假如形状有10种,颜色有10种,分别实现就会有10*10=100个子类,关键是还不止形状和颜色两个维度,如果再加上线条粗细,背景色等维度就真的太繁琐了。
我们将形状Shape和颜色Color解耦合,分别实现
public abstract class Color { @Override public String toString() { return this.getClass().getSimpleName(); } } public class BlueColor extends Color{ } public class GreenColor extends Color{ } public class RedColor extends Color{ }
在实现一个Shape类,持有一个颜色Color属性
public abstract class Shape { private Color color; public void setColor(Color color) { this.color = color; } public Color getColor() { return color; } abstract void draw(); } //正方形 public class Square extends Shape{ @Override void draw() { System.out.println(getColor()+" "+this.getClass().getSimpleName()); } } //圆形 public class Circle extends Shape{ @Override void draw() { System.out.println(getColor()+" "+this.getClass().getSimpleName()); } } //长方形 public class Rectangle extends Shape{ @Override void draw() { System.out.println(getColor()+" "+this.getClass().getSimpleName()); } }
这样就可以让形状和颜色分别实现
public class PaintBoard { public static void main(String[] args) { BlueColor blueColor = new BlueColor(); Square square = new Square(); square.setColor(blueColor); square.draw(); } } //输出 BlueColor Square
这篇关于java设计模式之桥接模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南