设计模式之桥接模式

举个例子,男孩送女孩礼物,礼物有两个维度,根据以下区分:

  • 按样貌可以分为温暖型、狂野型
  • 按具体礼物种类分为戒子、鲜花

    如果男孩要送女孩温暖型的戒子,或者狂野型的鲜花,那应该怎么实现呢?

1、定义礼物类

public abstract class Gift {
    protected GiftImpl impl;
}

2、定义具体礼物类

public abstract class GiftImpl {

}

3、温暖型礼物

public class WarmGift extends Gift {

    public WarmGift(GiftImpl impl) {
        this.impl = impl;
    }
}

4、狂野型礼物

public class WildGift extends Gift {

    public WildGift(GiftImpl impl) {
        this.impl = impl;
    }

}

5、花和戒子

public class Ring extends GiftImpl {

}
public class Flower extends GiftImpl {

}

6、如果要送实现温暖型的花

public class Boy {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void pursue(Girl mm) {
        Gift g = new WarmGift(new Flower());
    }
}

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。
每个维度都定义一个抽象父类
使用桥接模式场景,两个或多个维度的排列组合,可以使用桥接模式
聚合就是指一个类里面有另一个类的引用
比如此例子:
boy送礼物给girl,礼物有两个维度:1、温暖型、狂野型 2、具体型:花、戒指
如果使用继承,1型继承Gift, 2型继承1型,或者2型继承Gift,1型继承2型,那么将会产生相互耦合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值