返回介绍

4.4 Self 的延迟绑定与模块化

发布于 2025-02-20 00:17:07 字数 705 浏览 0 评论 0 收藏 0

参见《 Why of Y 》。

OBJECT-DEL 语法抽象的定义中,注意我们在消息发送的定义中使用了自我调用的模式 (obj obj) 。我们之前也用到过自我调用模式,是在不赋值的情况下实现递归绑定(译注,参见 PLAI)。

想想 C++和 Java 等主流语言是怎么做的:它们怎么解决可扩展性(extensibility) 和脆弱性(fragility) 之间的折衷?

OOP 的这个特性也被称为“开放式递归”(open recursion):任何子对象都可以重新定义其父对象的(父对象的)方法。当然,这种机制有利于 可扩展性 (extensibility),因为我们可以扩展对象的任何方面,而不必事先预见到需要进行这些扩展。另一方面,开放式递归使得软件变得更加 脆弱 (fragile),因为以不可预见、不正确的方式扩展对象太过容易。想象一下可能出问题的情况,然后考虑可行的替代设计。为了进一步阐明脆弱性,可以考虑对象的黑盒组合情况:有两个对象,各自独立开发,然后把它们放入委托关系中。可能会出什么问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文