Java23种设计模式之结构型模式「桥接模式」

桥接模式 - 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天

你可能感兴趣的:(Java23种设计模式之结构型模式「桥接模式」)