设计模式的关键-多态

本文围绕设计模式与多态展开。介绍了面向对象的继承、重载和多态特性,强调多态对设计模式的重要性。分析了桥接、策略、状态、职责链和访问者等模式,指出设计模式的差别在于对多态运用的不同,还从三个维度阐述了多态丰富函数机能的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《简单学习设计模式》
多态
面向对象带给了我们什么?
继承:可以通过继承追加机能
重载:相同的函数名,可以因参数的不同有不同的版本
多态:可以通过继承是函数有不同的表现(这就是上图表示的意思)

个人认为多态是面向对象最有价值的特性,也是面向对象对设计的最大影响的部分。
也是作为设计人员最可以规划的空间。多态真的很好。没有多态就没有设计模式。

桥接模式,策略模式,状态模式
桥接模式、策略模式、状态模式
共同点:就是,A通过B的多态,使A.bun可变化。因装载mB的不同而不同。
差别:mB的装载控制不同,
1.策略,是A根据需求,选择装载不同的策略。
2.状态呢,B控制A对mB的装载。
3.桥接:没啥特点,就是其他模式的基础,其实我觉得桥接不应该作为一个模式,就是对象的组合吗。不能算做一种模式。
职责链
职责链模式
和上面的模式相比:B的继承关系中多了一个桥接。子类继承父类,父类桥接子类。
A的mb状态时固定的,B的mB的装载也是固定的,取决于bfun传入的业务(type)是否自己能处理。
能处理:直接处理完,返回。
不能处理:传递给mB。
访问者模式:
访问者模式这图是等同于访问者模式的标准类图的,我这里是为了和以上的模式对比,所以没做位置调整
特点:
1.之前的桥接(组合)关系,变成了依赖关系
2.对应B的 bfun函数变成了 bfun(A1 a) bfun(A2 a),这就是访问者模式最有特点的部分了,他会根据访问的对象不同去变化。(B是访问者)

总结:
1.通过上面几种模式的举例,说白了:设计模式的差别就是对多态运用的不同。对多态运用的差别就是个模式的特点
2.从技能的角度讲,设计模式就是如何用一种手段来丰富某个函数的机能。
第一维度.多态本身是机能变化的一个维度
第二维度.函数的参数也作为一个多态的对象传入是一个维度。(如果是简单类型的话,函数本身也可以是丰富函数机能的一个维度)
第三维度.被传入的对象被调用的时候,把this作为参数传入,又是一个维度的丰富。
那么,上面那些模式用到了第三维度的设计呢?
很明显访问者模式就用到了第三维度的多态。
那么第二维度,访问者用到了第二维度,因为根据入参,函数会有不同的行为。
其他的模式只用到了第一维度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值