光猫桥接模式怎么设置(路由器设置桥接模式)

桥接设计模式:

  • 结构型设计模式
  • 将抽象部分与它实现部分离,使它们都可以独立地变化
  • 通俗来说,是通过组合来桥接其它的⾏为/维度

应用场景:

  • 系统需要在构件的抽象化⻆色和具体化⻆色之间增加更多的灵活性
  • 不想使用继承导致系统类的个数急剧增加的系统
  • 有时候一个类,可能会拥有多个变化维度,⽐如啤酒,有不同的容量和品牌,可以使用继承组合的⽅式进行开发,假如维度很多,就容易易出现类的膨胀,使用桥接模式就可以解决这个问题,且解耦

业务背景:

  • 手机可以从两个维度进行变化,一个是品牌,一个是内存.此时我们就可以通过桥接模式将这两个维度分离开来,每一个维度都可以独立扩展.比如说手机品牌,苹果、三星、锤子等等.内存方面又可以生产10G、16G等等.从专业的角度来看可以这样定义桥接模式.

桥接模式图:

光猫桥接模式怎么设置(路由器设置桥接模式)(1)

核心组成:

  • client:指的是我们买手机的人
  • Abstraction(抽象类):指的是手机抽象类
  • Refined Abstraction(具体类):指的是具体手机品牌
  • Implementor:在这里相当于手机的其他组件,内存
  • ConcreteImplementor:具体的内存型号.

实现步骤:

  • 定义Implementor,这里定义手机内存接口
public interface Memory {  public void addMemory();}

  • 定义ConcreteImplementor,这里指具体的内存
public class Memory6G implements Memory {  @Override  public void addMemory() {    System.out.println("6G内存");  }}public class Memory8G implements Memory {  @Override  public void addMemory() {    System.out.println("8G内存");  }}

  • 定义Abstraction手机抽象类
public abstract class Phone {  public Memory memory;  public void setMemory(Memory memory) {    this.memory = memory;  }  public abstract void buyPhone();}

  • 定义Refined Abstraction(具体的手机品牌)
public class HuaWei extends Phone {  @Override  public void buyPhone() {    System.out.println("购买de华为手机-");    memory.addMemory();  }}public class XiaoMi extends Phone {  @Override  public void buyPhone() {    System.out.println("购买de小米手机-");    memory.addMemory();  }}

  • 上下文应用
public class BridgeContext {  public static void main(String[] args) {    Phone huaWei = new HuaWei();    huaWei.setMemory(new Memory6G());    huaWei.buyPhone();    huaWei.setMemory(new Memory8G());    huaWei.buyPhone();    Phone xiaomi = new XiaoMi();    xiaomi.setMemory(new Memory6G());    xiaomi.buyPhone();    xiaomi.setMemory(new Memory8G());    xiaomi.buyPhone();  }}

桥接模式的优点:

  • 抽象和实现的分离.
  • 优秀的扩展能⼒,符合开闭原则

桥接模式的缺点:

  • 增加系统的理解与设计难度
  • 使用聚合关联关系建立在抽象层,要求开发者针对抽象 进⾏设计与编程,比如抽象类汽车,⾥面聚合了颜⾊类,有点像对象适配器

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页