【发布时间】:2012-10-12 17:03:20
【问题描述】:
我参与了一个项目,该项目将在不同时间用不同语言编写的代码整合到一个应用程序中。
我的作品正在从 C++ 转向 Java。在阅读了这个问题的 cmets 后:https://stackoverflow.com/questions/587458/implement-mixin-in-java 我得出的结论是,如果没有代码生成方案,Java 中的 mixins 是不可能的,而且这些方案在我正在工作的团队中不会受到好评。
使用 vanilla Java 在 C++ 中实现曾经是 Mixin 的正确方法是什么?特别是,曾经有一种 MVC 类型的设计,其中一些控制器具有使用控制器状态的混合匹配逻辑。控制器会继承 Mixins 以在各种排列中获得此功能,因此线性继承路径没有多大意义。
我现在能想到的最好的事情是一堆实用程序类型的类,其中包含以前在 Mixins 中的逻辑,并让控制器在将自己作为引用传递时调用它们的功能,以便实用程序类可以访问他们的状态。恕我直言,这真的很臭,我希望有更好的方法。
那么,用 Java 设计这个的正确方法是什么?
【问题讨论】:
-
搜索AspectJ mixin。我自己没有使用
AspectJ进行 mixin,但它似乎是一种流行的方法。