我剛剛在Java框架中發現了一個article,它顯然允許它支持Mixins以及一些名爲Composite Oriented Programming(對於我所知道的全部可能是同樣的事情......)我也聽說過/使用過AOP,我不確定它與此有什麼不同...抽象類和Mixin有什麼區別?
13
A
回答
23
在語言無關的層面上,mixin只是增加了類的功能,更爲程序員提供了方便,並且避免了代碼重複。抽象(基本)類形成一個is-a關係並允許多態性。繼承過度使用的一個原因是,它是一種實現混合的簡單方法,無需編寫任何不支持它們的語言的樣板。問題在於你聲明多態是一種副作用,使你的API更加混亂,並可能增加不明確性。因此,像D和Ruby這樣的新語言支持mixin作爲本地特性,允許一種方便的方式將一堆功能添加到類中,而無需聲明多態是一種關係。
0
Mixin絕不意味着獨立的課堂。他們只是爲你聲明的類添加一些功能。在Python中,它們可以通過類裝飾器輕鬆應用。例如,你可以用Singleton mixin裝飾你的班級,讓你的班級變成一個單身人士。
相關問題
- 1. 繼承時抽象類和非抽象類有什麼區別
- 2. python抽象基類,mixin和抽象方法之間的區別
- 3. 抽象和封裝有什麼區別?
- 4. 抽象和虛擬有什麼區別?
- 5. 抽象類和靜態類之間有什麼區別?
- 6. 抽象類和接口之間有什麼區別?
- 7. 抽象類和繼承之間有什麼區別?
- 8. 界面和抽象類有什麼區別?
- 9. 繼承和抽象類有什麼區別?
- 10. 抽象與外觀有什麼區別?
- 11. 接口類和抽象類有什麼區別和相似之處?
- 12. 具有零參數的抽象類和沒有參數的抽象類之間有什麼區別?
- 13. 抽象類中的方法的外部抽象和局部抽象之間有什麼區別?
- 14. 解析樹和抽象語法樹有什麼區別?
- 15. DBpedia中的抽象和評論有什麼區別
- 16. 具體RTN和抽象RTN有什麼區別?
- 17. 「抽象解析樹」和「解析樹」有什麼區別?
- 18. '非虛擬界面'和'抽象界面'有什麼區別?
- 19. MustInherit和抽象類之間的區別
- 20. 抽象類和接口在JVM中的存儲方式有什麼區別
- 21. 使用數據庫類,db抽象層和orm有什麼區別?
- 22. 在Jade中調用mixin時,「+」和mixin關鍵字有什麼區別?
- 23. 類,對象,實體:有什麼區別?
- 24. Debug類和Trace類有什麼區別?
- 25. ConfigurationManager類和Settings類有什麼區別?
- 26. HostingEnvironment類和HttpRuntime類有什麼區別?
- 27. 子類和子類有什麼區別?
- 28. java.awt.Rectangle類和java.awt.geom.Rectangle2D.Double類有什麼區別?
- 29. 在ember.js中,mixin和extend有什麼區別?
- 30. mixin和裝飾器模式有什麼區別?
+1好的簡要說明。這COP的東西聽起來很酷。雖然我喜歡看到這種事情一直沿着核心語言的方向發展。與AOP的東西一樣。 – BuddyJoe 2009-02-26 17:01:15