码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式—桥接模式

时间:2017-05-18 20:10:37      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:设计原则   面向对象   extend   代码实现   nbsp   独立   桥接   pack   思想   

用的并不是特别多,但是熟悉这个模式对于理解面向对象的设计原则,包括“开-闭”原则以及组合/聚合复用原则都很有帮助。

理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。

 

如果子类的扩展有两个维度,这时候想解耦和来解决排列组合问题。用组合代替继承。

比如说就礼物这东西而言,可大致抽象分为两类,一种是温暖型的,一种是狂野型的,在礼物的实现上可具体为花或者钻戒或者大炮等等;

在抽象这个维度上可能会扩展,在具体实现上也会扩展,就会形成各式各样的排列组合:温暖的***,狂野的***,实用的***。

如果这个时候使用继承那么继承体系将会非常臃肿。

现在采用桥梁模式来实现,抽象部分和实现部分分离开,可以相互独立的变化。从而大大提高了系统的可扩展性。

 

代码实现:

1.礼物抽象类

package com.bjsxt.dp.bridge;

public class Gift {
    protected GiftImpl impl;
}

在礼物抽象类中聚合了礼物的实现类,而不在使用继承的方式。

2.礼物实现类

package com.bjsxt.dp.bridge;

public class GiftImpl {

}

3.继承礼物抽象类的WarmGift

package com.bjsxt.dp.bridge;

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

4.继承礼物抽象类的WildGift

package com.bjsxt.dp.bridge;

public class WildGift extends Gift {

    public WildGift(Ring ring) {
        this.impl = impl;
    }
    
}

5.继承礼物实现类的Flower

package com.bjsxt.dp.bridge;

public class Flower extends GiftImpl {

}

6.继承礼物实现类的Ring

package com.bjsxt.dp.bridge;

public class Ring extends GiftImpl {

}

 

桥梁模式的优点:

桥梁模式分离了抽象部分和实现部分,从而极大地提供了系统的灵活性。

让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。

设计模式—桥接模式

标签:设计原则   面向对象   extend   代码实现   nbsp   独立   桥接   pack   思想   

原文地址:http://www.cnblogs.com/xiangkejin/p/6874862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!