Java设计模式-桥接模式(Bridge Pattern)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、桥接模式
  • 二、代码示例
    • 1.创建桥接实现接口
    • 2.创建接口实现类
    • 3 使用接口创建抽象类
    • 4 抽象实现类
    • 5 测试
  • 总结


一、桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。
意图: 将抽象部分与实现部分分离,使它们都可以独立的变化。

主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。

何时使用: 实现系统可能有多个角度分类,每一种角度都可能变化。

如何解决: 把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。

关键代码: 抽象类依赖实现类。

二、代码示例

模拟两个A,B公司生产和销售产品。
Java设计模式-桥接模式(Bridge Pattern)_第1张图片

1.创建桥接实现接口

产品接口

/**
 * 提供一个接口,提供两个接口,生产和销售方法
 */
public interface Product {
    void produce();
    void sell();
}

2.创建接口实现类

A产品

public class AProduct implements Product{
    @Override
    public void produce() {
        System.out.println("生产产品A......");
    }

    @Override
    public void sell() {
        System.out.println("销售产品A......");
    }
}

B产品

/**
 * 生产B产品
 */
public class BProduct implements Product{
    @Override
    public void produce() {
        System.out.println("生产B产品......");
    }

    @Override
    public void sell() {
        System.out.println("销售B产品......");
    }
}

3 使用接口创建抽象类


/**
 * 接口抽象类
 */
public abstract class Company {
    protected Product product;

    protected Company(Product product){
        this.product = product;
    }

    /**
     * 提供一个抽象方法
     */
    public abstract void produce();
}

4 抽象实现类

A公司

/**
 * A公司
 */
public class ACompany extends Company {

    protected ACompany(Product product) {
        super(product);
    }

    @Override
    public void produce() {
       product.produce();
    }
}

B公司

/**
 * B公司
 */
public class BCompany extends Company {

    protected BCompany(Product product) {
        super(product);
    }

    @Override
    public void produce() {
        product.produce();
    }
}

5 测试


public class Client {
    public static void main(String[] args) {
        AProduct a = new AProduct();
        Company acompany = new ACompany(a);
        acompany.produce();

        BProduct b = new BProduct();
        Company bcompany = new BCompany(b);
        bcompany.produce();
    }
}

总结

业务抽象和业务实现,实现类间的类间解耦。

你可能感兴趣的:(Java,java,设计模式,桥接模式)