Ruby编程中的多态、混合与数据访问技术
1. 鸭子类型(Duck Typing)
鸭子类型意味着对象的类型由其能做的事情来定义,而非它是什么。用一句形象的话来说:“如果它走路像鸭子,叫声像鸭子,那么在解释器看来,它就是鸭子”。鸭子类型允许你轻松插入新的实现,无需大量繁琐的工作。只需编写一个实现所需方法的对象,然后将其放入系统中替代其他对象即可。
1.1 鸭子类型的优势
- 便于编写单元测试的桩对象 :在单元测试中,如果需要某个对象的虚拟版本,鸭子类型让这变得轻而易举,只需实现测试所需的方法即可。
- 打破导致重复代码的人为边界 :避免了代码的重复编写,提高了代码的复用性。
- 更易于从特定关系重构为更通用的关系 :使代码的扩展性更强。
1.2 鸭子类型的劣势
自动化工具更难(虽然并非不可能)猜测与变量关联的可能方法。由于这个原因(以及目前缺乏相关投入),Ruby集成开发环境(IDE)提供的代码补全和重构功能远不及优秀的Java IDE。
1.3 代码示例
在Ruby中,虽然可以通过调用 kind_of? 进行更多的前期类型检查,但开发者很少这么做,而是更倾向于使用鸭子类型。以下是一个简单的类型检查示例:
class Object
def must_be(*types)
types.each {|type| rais
超级会员免费看
订阅专栏 解锁全文

635

被折叠的 条评论
为什么被折叠?



