文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4.4 Self 的延迟绑定与模块化
参见《 Why of Y 》。
在 OBJECT-DEL
语法抽象的定义中,注意我们在消息发送的定义中使用了自我调用的模式 (obj obj)
。我们之前也用到过自我调用模式,是在不赋值的情况下实现递归绑定(译注,参见 PLAI)。
想想 C++和 Java 等主流语言是怎么做的:它们怎么解决可扩展性(extensibility) 和脆弱性(fragility) 之间的折衷?
OOP 的这个特性也被称为“开放式递归”(open recursion):任何子对象都可以重新定义其父对象的(父对象的)方法。当然,这种机制有利于 可扩展性 (extensibility),因为我们可以扩展对象的任何方面,而不必事先预见到需要进行这些扩展。另一方面,开放式递归使得软件变得更加 脆弱 (fragile),因为以不可预见、不正确的方式扩展对象太过容易。想象一下可能出问题的情况,然后考虑可行的替代设计。为了进一步阐明脆弱性,可以考虑对象的黑盒组合情况:有两个对象,各自独立开发,然后把它们放入委托关系中。可能会出什么问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论