结构型模式之桥接模式(九)

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

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

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

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

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

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

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

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

结构型模式之桥接模式(九)_第1张图片

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

结构型模式之桥接模式(九)_第2张图片

首先,有一个抽象类

结构型模式之桥接模式(九)_第3张图片

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

结构型模式之桥接模式(九)_第4张图片

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

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

“ConcreteImplementorA”继承“Implementor”

结构型模式之桥接模式(九)_第5张图片

“RefinedAbstraction”继承“Abstraction”

结构型模式之桥接模式(九)_第6张图片

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

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

结构型模式之桥接模式(九)_第7张图片

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

结构型模式之桥接模式(九)_第8张图片

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

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

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

 结构型模式之桥接模式(九)_第9张图片

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

结构型模式之桥接模式(九)_第10张图片

结构型模式之桥接模式(九)_第11张图片

肉体抽象类具备物理攻击

结构型模式之桥接模式(九)_第12张图片

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

结构型模式之桥接模式(九)_第13张图片

猪的身体

结构型模式之桥接模式(九)_第14张图片

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

结构型模式之桥接模式(九)_第15张图片

天蓬元帅的灵魂

结构型模式之桥接模式(九)_第16张图片

应用时:

结构型模式之桥接模式(九)_第17张图片

测试效果 

 结构型模式之桥接模式(九)_第18张图片


以上就是今日分享,如果你喜欢记得点赞收藏,以防找不到我~ 

你可能感兴趣的:(九耶教育(钛伦特软件),桥接模式,java,开发语言)