设计模式之桥接模式
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. 总结
桥接模式分离了抽象接口及其实现部分
交接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则,复用性较差,桥接模式是比多继承方案更好的解决方案
交接模式提高了系统的可扩充性,在两个变化维度任意扩展一个维度,都不需要修改原有系统
实现细节对客户透明,可以对用户隐藏实现细节
桥接模式的引入会增加系统的理解与设计难度,由于聚合关系建立在抽象层,要求开发者针对抽象进行设计与编程
图解设计模式
网友评论