【Java】Bridge 桥接模式

Bridge 桥接模式

萌妹子_liu发布于 21 分钟前

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

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

模式简介:

将抽象部分与它的实现部分分离,使他们都可以独立地变化。“将抽象部分与它的实现部分分离”指实现系统可能有多个角度分类,每一种分类都可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合

举个例子:我给我喜欢的男孩子送礼物,从抽象的角度来说,可以将礼物分为温馨类型的、狂野类型的;从具体的礼物来说,比如送玫瑰,皮带,钱包(温馨的)、敌敌畏,杀猪刀(狂野的),

我们可以利用继承来实现:
【Java】Bridge 桥接模式
这样是可以实现,但是逼格太低,耦合度高,并且如果我们需要再加一类礼物呢,扩展一直新类型的礼物,都会有多个子类需要实现

模式结构:

【Java】Bridge 桥接模式

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!");

}

}

java

阅读 16发布于 21 分钟前

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

萌妹子_liu

1 声望

2 粉丝

0 条评论

得票时间

avatar

萌妹子_liu

1 声望

2 粉丝

宣传栏

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

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

模式简介:

将抽象部分与它的实现部分分离,使他们都可以独立地变化。“将抽象部分与它的实现部分分离”指实现系统可能有多个角度分类,每一种分类都可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合

举个例子:我给我喜欢的男孩子送礼物,从抽象的角度来说,可以将礼物分为温馨类型的、狂野类型的;从具体的礼物来说,比如送玫瑰,皮带,钱包(温馨的)、敌敌畏,杀猪刀(狂野的),

我们可以利用继承来实现:
【Java】Bridge 桥接模式
这样是可以实现,但是逼格太低,耦合度高,并且如果我们需要再加一类礼物呢,扩展一直新类型的礼物,都会有多个子类需要实现

模式结构:

【Java】Bridge 桥接模式

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!");

}

}

以上是 【Java】Bridge 桥接模式 的全部内容, 来源链接: utcz.com/a/115183.html

回到顶部