gpt4 book ai didi

oop - "Many functions operating upon few abstractions"原理 vs 面向对象

转载 作者:行者123 更新时间:2023-12-03 15:18:32 24 4
gpt4 key购买 nike

Clojure 语言的创造者 claims “开放的、大型的函数集在开放的、小型的可扩展抽象集上运行是算法重用和库互操作性的关键”。显然,它与典型的 OOP 方法相矛盾,在这种方法中,您创建大量抽象(类)和相对较小的一组操作它们的函数。请推荐一本书、书中的一章、一篇文章或您的个人经历来详细说明这些主题:

  • OOP 中出现的问题的激励示例,以及如何使用“基于少量抽象的多函数”来解决这些问题
  • 如何有效地进行 MFUFA* 设计
  • 如何重构面向 MFUFA 的 OOP 代码
  • OOP 语言的语法如何妨碍 MFUFA

  • *MFUFA:“在很少的抽象上有很多功能”

    最佳答案

    编程中有两个主要的“抽象”概念:

  • 参数化(“多态性”,通用性)。
  • 封装(数据隐藏),

  • [编辑:这两个是双重的。第一个是客户端抽象,第二个是实现方抽象(如果你关心这些事情:在形式逻辑或类型理论方面,它们分别对应于普遍和存在量化)。]

    在 OO 中,类是实现这两种抽象的厨房水槽功能。

    广告 (1),对于几乎每个“模式”,您都需要定义一个自定义类(或多个)。另一方面,在函数式编程中,您通常有更多轻量级和直接的方法来实现相同的目标,尤其是函数和元组。例如,经常有人指出,GoF 中的大部分“设计模式”在 FP 中都是多余的。

    Ad (2),如果您没有可变状态徘徊在需要检查的任何地方,则需要较少地进行封装。您仍然在 FP 中构建 ADT,但它们往往更简单和更通用,因此您需要的它们更少。

    关于oop - "Many functions operating upon few abstractions"原理 vs 面向对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565116/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com