设计模式之桥接模式

桥接模式(bridge),顾名思义,在两个有关系的物体之间搭建1座桥,二者之间可以相互独立,下降耦合,解决了继承之间的强依赖关系。

举个例子:现在有很多的电子产品,比如手机、平板等,而又有很多的生产厂商,比如苹果、小米等。如果使用多重继承的话,类是以乘积增长的,而如果用桥接模式类是以和的方式增加的。明显可以下降类的个数。

桥接模式是将抽象和实现解耦,使它们可以独立地变化。这里有抽象和实现两个概念,其实不是说实现这个抽象。还是以上面的例子来讲明,电子产品是抽象的产品,而生产厂商则是对应的实现。

下面直接给出代码,写的比较简单。UML图自己画吧:

———————————————————–

//ElectronicProduct.java
package org.uestc.bridge;

public abstract class ElectronicProduct {

Manufacturer manufacturer;

public ElectronicProduct(Manufacturer manufacturer) {
this.manufacturer = manufacturer;
}

public void GetBrand() {
this.manufacturer.GetBrand();
//System.out.println(")
}

}

class Phone extends ElectronicProduct {
public Phone(Manufacturer manufacturer) {
super(manufacturer);
}

public void GetBrand() {
manufacturer.GetBrand();
System.out.println("phone");
}
}

class Pad extends ElectronicProduct {
public Pad(Manufacturer manufacturer) {
super(manufacturer);
}

public void GetBrand() {
manufacturer.GetBrand();
System.out.println("pad");
}

}

//Manufacture.java
package org.uestc.bridge;

public interface Manufacturer {
void GetBrand();
}

class Apple implements Manufacturer {

@Override
public void GetBrand() {
System.out.print("Apple's ");
}

}

class XiaoMi implements Manufacturer {

@Override
public void GetBrand() {
// TODO Auto-generated method stub
System.out.print("xiaomi's ");

}

}

//client.java
package org.uestc.bridge;

public class Client {
public static void main(String[] args) {
ElectronicProduct iphone = new Phone(new Apple());
iphone.GetBrand();

ElectronicProduct xiaoMiPad = new Pad(new XiaoMi());
xiaoMiPad.GetBrand();

}

}

运行结果以下:

Apple's phone
xiaomi's pad

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 设计模式之桥接模式

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡