桥接模式 - Bridge
- 用于把抽象化与实现化解耦,使得二者可以独立变化
- 通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦
- 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响
-
意图: 将抽象部分与实现部分分离,使它们都可以独立的变化
-
主要解决: 在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活
-
优点: 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明
-
缺点: 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程
定义一个接口 并 实现不同的业务场景
public interface Product {
void createProduct(String name, String time);
}
public class ProductA implements Product {
@Override
public void createProduct(String name, String time) {
System.out.println("创建项目A, 项目名称:" + name + ", 项目时间:" + time);
}
}
public class ProductB implements Product {
@Override
public void createProduct(String name, String time) {
System.out.println("创建项目B, 项目名称:" + name + ", 项目时间:" + time);
}
}
定义一个抽象接口
public abstract class Create {
protected Product product;
public Create(Product product) {
this.product = product;
}
public abstract void createProductMethod();
}
实现这个抽象接口
public class CreateProduct extends Create {
private String name;
private String time;
public CreateProduct(Product product, String name, String time) {
super(product);
this.name = name;
this.time = time;
}
@Override
public void createProductMethod() {
System.out.println("抽象接口特殊的业务实现和接口实现相互分开,互不影响");
System.out.println("这里是桥接的核心, 创建了项目:" + name);
product.createProduct(name, time);
}
}
调用
public static void main(String[] args) {
Create createProductA = new CreateProduct(new ProductA(), "项目A", "1天");
createProductA.createProductMethod();
Create createProductB = new CreateProduct(new ProductB(), "项目B", "5天");
createProductB.createProductMethod();
}
输出
抽象接口特殊的业务实现和接口实现相互分开,互不影响
这里是桥接的核心, 创建了项目:项目A
创建项目A, 项目名称:项目A, 项目时间:1天
抽象接口特殊的业务实现和接口实现相互分开,互不影响
这里是桥接的核心, 创建了项目:项目B
创建项目B, 项目名称:项目B, 项目时间:5天
网友评论