桥接模式

1. 定义

桥接模式将抽象部分与它的实现部分分离,使它们都可以独立的变化。

2. 类图

3. Example

假如你是个小有所成的成功人士,开了家公司,生产什么商品全靠追风,哪个赚钱生产哪个,请写出商品生产、销售的过程,要求商品变化时,代码尽可能少变化。

package com.gitlearning.hanldegit.patterns.cor.bridge;

public abstract class Corp {
    Product product;

    public Corp(Product product) {
        this.product = product;
    }

    abstract void makeMoney();
}

class FakeCorp extends Corp {

    public FakeCorp(Product product) {
        super(product);
    }

    @Override
    void makeMoney() {
        product.beProduced();
        product.beSelled();
    }
}

interface Product {
    void beProduced();
    void beSelled();
}

class IPod implements Product {

    @Override
    public void beProduced() {
        System.err.println("produce : ipod" );
    }

    @Override
    public void beSelled() {
        System.err.println("sell: ipod");
    }
}

class Toy implements Product {

    @Override
    public void beProduced() {
        System.err.println("produce : toy" );
    }

    @Override
    public void beSelled() {
        System.err.println("sell : toy" );
    }
}


class Test {
    public static void main(String[] args) {
        FakeCorp fakeCorp = new FakeCorp(new IPod());
        fakeCorp.makeMoney();

        fakeCorp = new FakeCorp(new Toy());
        fakeCorp.makeMoney();
    }
}

输出如下:

produce : ipod
sell: ipod
produce : toy
sell : toy

个人理解:

桥接模式好像是这样的:商品可以被生产和销售,这进行了一次抽象;而公司依赖于不同的产品,则对应于类图左侧的抽象。公司赚取具体是依靠产品的,因此产品可当做右侧的implentor。

4. 使用

  1. 不希望或不适用使用继承的场景
  2. 接口或抽象类不稳定的场景
  3. 重用性要求较高的场景

5.其他

优点:

  1. 抽象和实现分离
  2. 优秀的扩充能力
posted @ 2020-03-03 21:54  Code&Fight  阅读(108)  评论(0编辑  收藏  举报