设计模式之桥接模式
来源:互联网 发布:科目一挂机软件 编辑:程序博客网 时间:2024/05/17 06:42
桥接模式(bridge),顾名思义,在两个有关系的物体之间搭建一座桥,两者之间可以相互独立,降低耦合,解决了继承之间的强依赖关系。
举个例子:现在有很多的电子产品,比如手机、平板等,而又有很多的生产厂商,比如苹果、小米等。如果使用多重继承的话,类是以乘积增长的,而如果用桥接模式类是以和的方式增加的。显然可以降低类的个数。
桥接模式是将抽象和实现解耦,使它们可以独立地变化。这里有抽象和实现两个概念,并不是说实现这个抽象。还是以上面的例子来说明,电子产品是抽象的产品,而生产厂商则是对应的实现。
下面直接给出代码,写的比较简单。UML图自己画吧:
-----------------------------------------------------------
//ElectronicProduct.javapackage 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.javapackage org.uestc.bridge;public interface Manufacturer {void GetBrand();}class Apple implements Manufacturer {@Overridepublic void GetBrand() {System.out.print("Apple's ");}}class XiaoMi implements Manufacturer {@Overridepublic void GetBrand() {// TODO Auto-generated method stubSystem.out.print("xiaomi's ");}}
//client.javapackage 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 phonexiaomi's pad
0 1
- 设计模式之桥接模式
- C# 设计模式 之 桥接模式
- c#设计模式之[桥接模式]
- 设计模式之桥接模式
- 设计模式之-Bridge-- 桥接模式
- 设计模式之桥接模式
- 设计模式之桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式之桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式之桥接模式BridgePattern
- C# 设计模式之桥接模式
- 设计模式之桥接模式
- 设计模式之桥接模式
- Java 设计模式 之 桥接模式
- Java 设计模式 之 桥接模式
- Java 设计模式 之 桥接模式
- 设计模式之桥接模式
- LeetCode: Binary Tree Preorder Traversal
- 人品计算器
- Sicily 1294 高级机密
- cocos2dx之onEnter,onExit
- jdk安装会提示安装jdk和jre
- 设计模式之桥接模式
- hdu3853(简单概率dp)
- 【错误录】System.UnauthorizedAccessException: 对路径的访问被拒绝?
- LeetCode: Binary Tree Postorder Traversal
- hdu2151(概率dp)
- Strut2错误处理<init>
- VIM使用技巧及快捷操作
- 从零开始学习Gradle之一---初识Gradle
- HDOJ 5100 Chessboard 构造