设计模式之桥接模式

2020-03-09  本文已影响0人  成为一个无趣的人

设计模式之桥接模式

1. 模式定义

桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部分分离,是他们都可以独立地变化。[1]

​ -[1] 图说设计模式

2.UML类图

桥接模式

3. 代码实现

package com.lemon.bridge;

/**
 * @author Hello
 * @description 外观接口,拥有一个改变颜色的方法
 * @date 2020-03-09 18:00
 */
public interface Appearance {
    void setColor();
}
package com.lemon.bridge;

/**
 * @author Hello
 * @description 外观实现A 设置为红色
 * @date 2020-03-09 18:05
 */
public class AppearanceImplA implements Appearance {
    @Override
    public void setColor() {
        System.out.println("红色");
    }
}

package com.lemon.bridge;

/**
 * @author Hello
 * @description 外观实现B 设置为绿色
 * @date 2020-03-09 18:06
 */
public class AppearanceImplB implements Appearance {
    @Override
    public void setColor() {
        System.out.println("绿色");
    }
}
package com.lemon.bridge;

/**
 * @author Hello
 * @description 抽象按钮类,充当桥梁
 * @date 2020-03-09 18:00
 */
public abstract class ButtonBridge {
    private Appearance appearance;

    public abstract void setColor();

    public void setAppearance(Appearance appearance) {
        this.appearance = appearance;
    }

    public Appearance getAppearance() {
        return appearance;
    }
}
package com.lemon.bridge;

/**
 * @author Hello
 * @description 圆形按钮类
 * @date 2020-03-09 18:07
 */
public class CircleButton extends ButtonBridge {

    @Override
    public void setColor() {
        System.out.println("圆形按钮");
        getAppearance().setColor();
    }
}
package com.lemon.bridge;

/**
 * @author Hello
 * @description 矩形按钮类
 * @date 2020-03-09 18:28
 */
public class RectangleButton extends ButtonBridge {

    @Override
    public void setColor() {
        System.out.println("矩形按钮");
        getAppearance().setColor();
    }
}

4. 总结

  • 桥接模式分离了抽象接口及其实现部分

  • 交接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则,复用性较差,桥接模式是比多继承方案更好的解决方案

  • 交接模式提高了系统的可扩充性,在两个变化维度任意扩展一个维度,都不需要修改原有系统

  • 实现细节对客户透明,可以对用户隐藏实现细节

  • 桥接模式的引入会增加系统的理解与设计难度,由于聚合关系建立在抽象层,要求开发者针对抽象进行设计与编程

    图解设计模式

上一篇 下一篇

猜你喜欢

热点阅读