乐趣区

关于java:Bridge-桥接模式

参考:https://www.cnblogs.com/zyrblog/p/9233189.html

https://blog.csdn.net/yuxxz/article/details/92023480

模式简介:

将形象局部与它的实现局部拆散,使他们都能够独立地变动。“将形象局部与它的实现局部拆散”指实现零碎可能有多个角度分类,每一种分类都可能变动,那么就把这种多角度分离出来让它们独立变动,缩小它们之间的耦合

举个例子:我给我喜爱的男孩子送礼物,从形象的角度来说,能够将礼物分为舒适类型的、狂野类型的;从具体的礼物来说,比方送玫瑰,皮带,钱包 (舒适的)、敌敌畏,杀猪刀 (狂野的),

咱们能够利用继承来实现:

这样是能够实现,然而逼格太低,耦合度高,并且如果咱们须要再加一类礼物呢,扩大始终新类型的礼物,都会有多个子类须要实现

模式构造:

1.Gift:定义抽象类的接口;保护一个指向 GiftImpl 类型对象的援用
2.WarmGift、ColdGift:裁减由 Gift 定义的接口
3.GiftImpl:定义实现类的接口,该接口不肯定要与 Gift 的接口完全一致;GiftImpl 仅提供基本操作,Gift 则着重定义基于这些基本操作的较高层次的操作
4.Flower:实现 GiftImpl 接口并定义它的具体实现

应用场景:

桥接模式要解决的问题:
将形象局部与它的实现局部拆散,使他们都能够独立地变动。“将形象局部与它的实现局部拆散”指实现零碎可能有多个角度分类,每一种分类都可能变动,那么就把这种多角度分离出来让它们独立变动,缩小它们之间的耦合

模式实例:

1、Gift 形象礼物

package com.mashibing.Bridge.v4;
public abstract class Gift {GiftImpl impl;}

2、WarmGift、WildGift

从礼物的类型来分类,舒适的,狂野的,丑陋的,俊俏的等等,从礼物的类型角度形象进去,缩小与具体的礼物的耦合

package com.mashibing.Bridge.v4;
public class WarmGift extends Gift {public WarmGift(GiftImpl impl) {this.impl = impl;}
}
package com.mashibing.Bridge.v4;
public class WildGift extends Gift {public WildGift(GiftImpl impl) {this.impl = impl;}
}

3、GiftImpl

具体礼物的抽象类,这个能够是一般类,抽象类或者接口,依据理论须要,本类的目标是提供对具体礼物的基本操作,比方打印本人的名称等等

public class GiftImpl {}

4、Flower,Book 具体的礼物

package com.mashibing.Bridge.v4;
public class Flower extends GiftImpl {}
package com.mashibing.Bridge.v4;
public class Book extends GiftImpl {}

5、Main

package com.mashibing.Bridge.v4;
public class Main {public static void main(String[] args) {Gift g = new WarmGift(new Flower());
        give(new Boy("李易峰"),g);
 }
    public static void give(Boy boy,Gift g) {System.out.println(g + "gived!");
 }
}
退出移动版