2009-02-26 113 views
13

我剛剛在Java框架中發現了一個article,它顯然允許它支持Mixins以及一些名爲Composite Oriented Programming(對於我所知道的全部可能是同樣的事情......)我也聽說過/使用過AOP,我不確定它與此有什麼不同...抽象類和Mixin有什麼區別?

回答

23

在語言無關的層面上,mixin只是增加了類的功能,更爲程序員提供了方便,並且避免了代碼重複。抽象(基本)類形成一個is-a關係並允許多態性。繼承過度使用的一個原因是,它是一種實現混合的簡單方法,無需編寫任何不支持它們的語言的樣板。問題在於你聲明多態是一種副作用,使你的API更加混亂,並可能增加不明確性。因此,像D和Ruby這樣的新語言支持mixin作爲本地特性,允許一種方便的方式將一堆功能添加到類中,而無需聲明多態是一種關係。

+0

+1好的簡要說明。這COP的東西聽起來很酷。雖然我喜歡看到這種事情一直沿着核心語言的方向發展。與AOP的東西一樣。 – BuddyJoe 2009-02-26 17:01:15

0

Mixin絕不意味着獨立的課堂。他們只是爲你聲明的類添加一些功能。在Python中,它們可以通過類裝飾器輕鬆應用。例如,你可以用Singleton mixin裝飾你的班級,讓你的班級變成一個單身人士。

相關問題