python是一种动态语言、这意味着_动态语言中的接口有什么意义吗?

接口实际上为拥有它们的静态语言(如Java)增加了一定程度的动态语言灵活性。它们提供了一种查询对象的方法,该对象实现了契约

运行时

这个概念很好地移植到动态语言中。当然,这取决于您对“动态”一词的定义,甚至包括Objective-C,它在Cocoa中非常广泛地使用协议。

在鲁比我可能会问

object.respond_to? :sync

所以,是的,它有一个名为“sync”的方法,不管这是什么意思。

在Objective-C中,我可能会问类似的问题,即“这个看起来/走路/嘎嘎叫像是同步的东西吗?”:

[myObject respondsToSelector:@selector(sync)]

更好的是,以一些冗长的内容为代价,我可以问一些更具体的问题,例如,“这个看起来/走路/嘎嘎叫像是与MobileMe同步的东西吗?”:

[myObject respondsToSelector:@selector(sync:withMobileMeAccount:)]

那是鸭子在物种层次上的分类。

但要问一个对象是否有希望实现与MobileMe的同步。。。

[receiver conformsToProtocol:@protocol(MobileMeSynchronization)]

当然,您可以通过检查一系列选择器的存在来实现协议,这些选择器是您考虑的协议/duck的定义,并且它们是否足够具体。在哪一点上,这个协议仅仅是一大块丑陋回应的缩写?查询和一些非常有用的语法糖供编译器/IDE使用。

对于更复杂的库或类层次结构来说,它无疑比大多数应用程序代码更有用,但我认为这个概念在任何语言中都是有用的。

另外,还有人提到了混音。RubyMixins是一种共享代码的方式——例如,它们与类的实现相关。接口/协议是关于类或对象的接口。它们实际上可以相互补充。您可能有一个指定行为的接口,以及一个或多个帮助对象

实施

当然,我想不出任何一种语言都有明显的一级语言特征。在那些有mixin的系统中,包括mixin通常意味着它实现的接口。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值