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

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

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

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

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

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

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

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

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

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

 

首先,有一个抽象类

 

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

 

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

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

“ConcreteImplementorA”继承“Implementor”

 “RefinedAbstraction”继承“Abstraction”

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

 

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

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

 

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

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

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

 

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

 

肉体抽象类具备物理攻击

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

 

猪的身体

 

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

 

 天蓬元帅的灵魂

应用时:

测试效果

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值