gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1931回复:1

mixin 的简史

楼主#
更多 发布于:2003-08-17 18:19
mixin 的简史
词语 mixin 的初次使用源自 Lisp 社区。它被用于 CLOS 的主流中,实际上它在其中是一种设计模式,尝试控制这种语言的多重继承所带来的不便。mixin 设计模式也已被 C++ 社区用于同样目的。

之所以使用 mixin 这个名称,是因为这样的类可以以各种方式与其它类混合在一起。尽管 mixin 只是这些语言中的一种设计模式,但在语言级别上支持它们应该是毫无问题的。对于要将 mixin 添加到 Java 语言,已经提出了许多建议,但迄今为止最受欢迎的建议是使用 Jam,这是一种使用 mixin 的 Java 扩展,它是由意大利研究人员 Davide Ancona、Giovanni Lagorio 和 Elena Zucca 提出的。

喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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)构造器。

举报 回复(0) 喜欢(0)     评分
游客

返回顶部