2012-10-22 146 views
1

我是一個項目的一部分,它將不同時間用不同語言編寫的代碼合併到一個應用程序中。用Java實現Mixin的正確方法?

我的作品從C++轉向Java。在閱讀了關於這個問題的評論之後:https://stackoverflow.com/questions/587458/implement-mixin-in-java我得出結論:如果沒有代碼生成方案,Java中的mixin是不可能實現的,而且這些在我正在開發的團隊中不會得到很好的迴應。

使用vanilla Java在C++中實現曾經是Mixin的正確方法是什麼?特別是,過去有一種MVC型設計,其中一些控制器具有使用控制器狀態的混合 - 匹配邏輯。控制器會繼承Mixin以獲得各種排列中的此功能,使得線性繼承路徑沒有太大意義。

我現在能想到的最好的東西是一堆實用類型的類,它包含了曾經在Mixins中的邏輯,並且讓控制器在作爲引用傳入自身時調用它們的功能,以便實用程序類可以訪問他們的狀態。恕我直言,這真的很臭,我希望有更好的辦法。

那麼,在Java中設計這個的正確方法是什麼?

+0

搜索[AspectJ mixin](https://www.google.com/search?q=aspectj+mixin)。我自己沒有使用'AspectJ'作爲mixin,但它似乎是一種流行的方法。 –

回答

1

如果你真的想混入,您可以像使用Scala的語言,支持他們(和運行在與Java代碼JVM)

否則我會組成,這是不是既漂亮,但也很簡單。