赞
踩
将抽象部分与其显示部分分离,使他们都可以独立地变化。
其中:
桥接设计模式是一种结构型设计模式,它将抽象部分与实现部分分离,从而使两者可以独立变化。
假设我们有一个 Shape
抽象类,它定义了形状的基本操作。我们还有两个实现类 Circle
和 Square
,它们提供了具体形状的实现。
我们希望能够在不修改 Shape
抽象类的情况下向系统添加新的形状。
- // 抽象形状类
- abstract class Shape {
-
- protected DrawAPI drawAPI;
-
- protected Shape(DrawAPI drawAPI) {
- this.drawAPI = drawAPI;
- }
-
- public abstract void draw();
- }
-
- // 圆形类
- class Circle extends Shape {
-
- public Circle(DrawAPI drawAPI) {
- super(drawAPI);
- }
-
- @Override
- public void draw() {
- drawAPI.drawCircle();
- }
- }
-
- // 正方形类
- class Square extends Shape {
-
- public Square(DrawAPI drawAPI) {
- super(drawAPI);
- }
-
- @Override
- public void draw() {
- drawAPI.drawSquare();
- }
- }
-
- // 绘制 API 接口
- interface DrawAPI {
-
- void drawCircle();
- void drawSquare();
- }
-
- // 红色绘制 API 实现
- class RedDrawAPI implements DrawAPI {
-
- @Override
- public void drawCircle() {
- System.out.println("使用红色绘制圆形");
- }
-
- @Override
- public void drawSquare() {
- System.out.println("使用红色绘制正方形");
- }
- }
-
- // 绿色绘制 API 实现
- class GreenDrawAPI implements DrawAPI {
-
- @Override
- public void drawCircle() {
- System.out.println("使用绿色绘制圆形");
- }
-
- @Override
- public void drawSquare() {
- System.out.println("使用绿色绘制正方形");
- }
- }
-
- // 客户端代码
- public class Client {
-
- public static void main(String[] args) {
- DrawAPI redDrawAPI = new RedDrawAPI();
- DrawAPI greenDrawAPI = new GreenDrawAPI();
-
- Shape redCircle = new Circle(redDrawAPI);
- Shape greenSquare = new Square(greenDrawAPI);
-
- redCircle.draw();
- greenSquare.draw();
- }
- }
Shape
是一个抽象类,定义了形状的基本操作。Circle
和 Square
是实现类,它们提供了具体形状的实现。DrawAPI
是一个接口,定义了绘制形状所需的接口。RedDrawAPI
和 GreenDrawAPI
是 DrawAPI
接口的实现,它们提供了使用不同颜色的绘制功能。Shape
对象与 DrawAPI
对象关联来创建不同的形状和颜色组合。桥接模式将抽象部分(Shape
)与实现部分(DrawAPI
)分离,从而使两者可以独立变化。我们可以轻松地添加新的形状或绘制 API 实现,而无需修改其他部分。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。