• 23种设计模式(九)桥接模式(阁瑞钛伦特软件-九耶实训)


    常说的设计模式是23种设计模式,分为3大类:

    • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
    • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
    • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

     上次咱们说了“代理模式”以及“静态代理”和“JDK动态代理”。今天咱们聊一聊结构型模式中的“桥接模式”。

    结构型模式重点在于结构的变化。

    “桥接模式”网上常见的,认可度最高的定义是:

    桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。

    但是要想理解这个定义,必须先要理解“抽象部分是什么”,“实现部分是什么”,而且“独立是什么意思?”。

    可能对有些小伙伴有点困难,这次我们从另一个角度来看“桥接模式”。抛开定义直接考虑“桥接”这个词,实际和“嫁接”有点类似。

    可以理解为,本来可以一个类搞定,我非要弄成两个类,让主体类“嫁接”另一个类的对象。

     

    首先,有一个抽象类

     

    这里只是一个抽象类,对于继承此抽象类的操作来说,它是父类。对于使用它的类来说,它只是其中一个属性。

     

    由上面代码可以看出,本来“Implementor”的“operationImpl()”方法本可以直接写在“Abstraction”抽象类中,非要给分离出去写。从而能增加灵活性,而且细心的小伙伴能够发现,现在抽象类“Implementor”没有子类,只是在“Abstraction”抽象类中作为一个属性存在。其实最直接的结果就是,在设计“Abstraction”内部结构时,不用考虑也不用知道具体“Implementor”的子类是什么,反正到最后执行的时候,用什么子类都可以。因为继承抽象类必须实现其抽象方法。

    现在我们实现“Abstraction”和“Implementor”的子类

    “ConcreteImplementorA”继承“Implementor”

     “RefinedAbstraction”继承“Abstraction”

    实际调用的时候,我们对属性赋的值就是Implementor的子类对象。

     

    又到了讲故事的环节了,这次还是来设置一个《西游记》里的场景,主人公仍然是猪八戒。要知道,猪八戒在被猴子收服之前叫“猪悟能”。但是再往前看它可是天蓬元帅下凡。 

    事情是这样的,天蓬元帅掌管天界水兵,由于调戏嫦娥被贬下凡,不料错投了猪胎,从而长成这副模样。

     

    一个猪的身躯里住着一个天蓬元帅的灵魂。

    如果打架,“看似猪的攻击,却蕴含着神的力量”你说厉害不厉害。

    所以可以理解为,在猪崽儿生下来的时候,“桥接”了天蓬元帅的灵魂。用“桥接模式”表现出来就是这样的:

     

    灵魂的抽象类具备灵魂攻击

     

    肉体抽象类具备物理攻击

    实现猪的身体继承身体的抽象类

     

    猪的身体

     

    实现天蓬元帅的灵魂继承灵魂的抽象类

     

     天蓬元帅的灵魂

    应用时:

    测试效果

     

     

  • 相关阅读:
    一个快速切换一个底层实现的思路分享
    大学生静态HTML网页源码——佛山旅游景点介绍网页代码 家乡旅游网页制作模板 web前端期末大作业
    数据结构高阶--AVL(平衡二叉树)(图解+实现)
    Ubuntu更新镜像源切换
    嵌入式开发从入门到精通之第二十一节:三轴加速度传感器(BMA250E)
    七日算法先导(一)—— 数组
    搭建DNS服务器
    开源项目有哪些机遇与挑战?
    ThreadLocal VS session 及ThreadLocal用法
    基于springboot的鲜花销售商城网站
  • 原文地址:https://blog.csdn.net/m0_69234258/article/details/126098578