阅读:2065回复:1
mixin 的简史
mixin 的简史
词语 mixin 的初次使用源自 Lisp 社区。它被用于 CLOS 的主流中,实际上它在其中是一种设计模式,尝试控制这种语言的多重继承所带来的不便。mixin 设计模式也已被 C++ 社区用于同样目的。 之所以使用 mixin 这个名称,是因为这样的类可以以各种方式与其它类混合在一起。尽管 mixin 只是这些语言中的一种设计模式,但在语言级别上支持它们应该是毫无问题的。对于要将 mixin 添加到 Java 语言,已经提出了许多建议,但迄今为止最受欢迎的建议是使用 Jam,这是一种使用 mixin 的 Java 扩展,它是由意大利研究人员 Davide Ancona、Giovanni Lagorio 和 Elena Zucca 提出的。 |
|
|
1楼#
发布于:2003-08-17 18:29
mixin、Java 代码和 Jam:不仅仅是为了早餐
Jam 是一种向后兼容的 Java 平台 V1.0 扩展(带有两个新关键字:mixin 和 inherited)。无可否认,除非您正在将 Java 程序改写成 .NET 程序,否则您可以使用这种语言相当旧的版本,但是基本设计可以延用至各个更新的版本。 所提供的实现作为 Jam 到 Java 语言转换程序。注:jamc 实现不执行完整的程序类型检查。与此相反,它转换成 Java 源代码,并依赖 Java 类型检查器来捕获类型错误。这使 Jam 实现更简单,但是这也意味着要诊断从编译器上取回的错误消息会比较困难,因为我们已在实际编写的源代码上删除了这一步骤!最后,独立的 Jam 类型检查器对于生产使用是不可或缺的。 在 Jam 中,使用 mixin 类 def 内的声明来声明父类所需的方法,类似于:inherited <signature>。 mixin 的实例化可以这样编写:class NAME = MIXIN extends CLASS {CONSTRUCTOR*}。 CONSTRUCTOR 产品尾部的 * 意味着该产品可以不存在,也可以存在更多。如果在 mixin 实例化中没有指定任何构造器,那么就假定是缺省的不带参数的(zeroary)构造器。 |
|
|