结构性设计模式之Bridge(桥接)
摘要
桥接模式是一种结构性设计模式,其核心思想是将抽象部分与实现部分分离,使二者能够独立变化。本文通过汽车产品生产案例(产品A/B与颜色红/蓝/黄)展示了桥接模式的应用:将颜色作为独立接口实现,产品类通过组合方式调用颜色功能。关键结构包括抽象产品类(Product)、具体产品类(ProductA)和颜色接口(Color)及其实现类(Red/Blue/Yellow)。该模式适用于需要避免抽象与实现固定绑定的场景,支持通过子类扩展功能,且修改实现不影响客户端代码。代码示例演示了如何为不同产品动态配置颜色。
前言:
用自己的话理解桥接模式,做到解耦,抽象层和实现层都可单独的变化。
本代码实现逻辑
生产汽车颜色,有黄色、红色、绿色。产品A、产品B… 都是有这几个颜色,把产品颜色进行抽取。
1)意图
将抽象部分于其实现部分分离,使它们都可以独立的变化。
2)结构
3)适用性(了解)
Bridge 模式适用于:
不希望在抽象和它的实现部分之间有一个固定的绑定关系。
类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。
对一个抽象的实现部分的修改对应客户不产生影响,
代码:
/**
* @author psd
* 结构性设计模式之桥接模式
*/
public class BridgePattern {
public static void main(String[] args) {
Product product = new ProductA();
product.setName("产品A");
product.setColor(new Blue());
product.operation();
Product product1 = new ProductA();
product1.setName("产品B");
product1.setColor(new Red());
product1.operation();
}
}
abstract class Product{
private String name;
protected Color color;
public abstract void operation();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
}
class ProductA extends Product{
@Override
public void operation() {
color.operation(this.getName());
}
}
interface Color{
void operation(String name);
}
class Yellow implements Color{
@Override
public void operation(String name) {
System.out.println("黄色 " + name);
}
}
class Blue implements Color{
@Override
public void operation(String name) {
System.out.println("蓝色 " + name);
}
}
class Red implements Color{
@Override
public void operation(String name) {
System.out.println("红色 " + name);
}
}
喜欢我的文章记得点个在看,或者点赞,持续更新中ing…