代码之家  ›  专栏  ›  技术社区  ›  Anders Rune Jensen

原型与类[封闭]

  •  10
  • Anders Rune Jensen  · 技术社区  · 16 年前

    Steve Yegge最近发布了一篇 interesting blog post 他称之为通用设计模式。在那里,他详细介绍了使用原型作为建模工具,而不是类。与继承相比,我喜欢这种引入更少耦合的方式。但是,通过用其他类而不是继承来实现类,也可以用类来实现这一点。其他人是否有使用原型的成功案例,并且可能有助于解释使用原型与类相比的优势所在。我想这归结为静态建模与动态建模,但更多的例子将非常受欢迎。

    3 回复  |  直到 16 年前
        1
  •  13
  •   Corbin March    16 年前

    一个有趣的地方是,很容易使基于原型的语言行为OO,但很难使OO语言行为基于原型。

    除了您提到的组合与继承之外,还不完全清楚OO原型是什么样子的。

    原型语言使复杂的继承行为变得容易。您可以实施 multiple inheritance , mixin -比如行为,或者只是从一个对象中挑选你想要添加到另一个对象的内容。

    Wikipedia's article 提到:“基于原型的编程的拥护者经常认为,基于类的语言鼓励一种首先关注分类和类之间关系的开发模型。相比之下,基于原型的程序设计被视为鼓励程序员关注一组示例的行为,然后才担心将这些对象分类为原型对象,然后以类似于类的方式使用。”

    这并不是说原型范式完全有优点,没有缺点。如果OO更具限制性,那是因为它选择如此。我可以看到,如果你不小心,所有这些灵活性可能会给你带来麻烦。

        2
  •  3
  •   Andru Luvisi    16 年前

    原型是一种继承形式,只是对象直接从其他对象继承属性和行为,而不是从继承自其他类的类中获取属性和行为。

    例如,在 prototype based language 例如,JavaScript。

        3
  •  1
  •   CesarGon    15 年前

    对于那些感兴趣的人来说, NewtonScript 曾经(现在)是一门双语:你有原型,也有课程。您可以选择是从类、原型还是两者继承。