写点什么

设计模式 (七):桥接模式

  • 2021 年 11 月 12 日
  • 本文字数:1129 字

    阅读完需:约 4 分钟

  • ConcreteImplementor:具体实现类


代码示例




这里我们还是以我们经常使用的手机为例子:


手机的抽象类:


package cn.edu.hust.bridge;


//手机抽象类


public abstract class MobilePhone {


private SOC soc;


public void setSoc(SOC soc) {


this.soc = soc;


}


//不同的手机有不同的 UI


public abstract void sayUI();


}


这里有两种手机


小米手机:


package cn.edu.hust.bridge;


public class MiPhone extends Mobile


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


Phone{


public void sayUI() {


System.out.println("小米手机使用的是 MIUI");


}


}


魅族手机:


package cn.edu.hust.bridge;


public class MeizuPhone extends MobilePhone {


public void sayUI() {


System.out.println("魅族使用的 UI 是 Flyme");


}


}


对于抽象的扩展类:


package cn.edu.hust.bridge;


//手机的 SOC


public abstract class SOC {


//SOC 的品牌,根据不同的 SOC 输出不同的品牌


public abstract void sayBrand();


}


现实生活中,我们有高通和联发科:


package cn.edu.hust.bridge;


public class GaoTongSOC extends SOC {


public void sayBrand() {


System.out.println("使用的是高通的 SOC");


}


}


联发科


package cn.edu.hust.bridge;


public class MTKSOC extends SOC {


public void sayBrand() {


System.out.println("使用的是联发科的 SOC");


}


}


客户端的使用如下:


package cn.edu.hust.bridge;


public class Client {


public static void main(String[] args)


{


//这里针对于小米手机


SOC gaoTongSOC=new GaoTongSOC();


MobilePhone mobilePhone=new MiPhone();


//小米手机的 SOC


mobilePhone.setSoc(gaoTongSOC);


//这个手机的 UI


mobilePhone.sayUI();


//这里针对于魅族手机


SOC mtkSOC=new MTKSOC();


MobilePhone mobilePhone1=new MeizuPhone();


mobilePhone1.setSoc(mtkSOC);


mobilePhone1.sayUI();


}


}


模式分析




? 理解桥接模式,重点需要理解如何将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。


  • 抽象化:抽象化就是忽略一些信息,把不同的实体当作同样的实体对待。在面向对象中,将对象的共同性质抽取出来形成类的过程即为抽象化的过程。

  • 实现化:针对抽象化给出的具体实现,就是实现化,抽象化与实现化是一对互逆的概念,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。

  • 脱耦:脱耦就是将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联,将两个角色之间的继承关系改为关联关系。桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化,这就是桥接模式的用意。


模式优点




桥接模式的优点:

评论

发布
暂无评论
设计模式(七):桥接模式