我刚刚发现了一篇关于Java框架的文章,显然它允许它支持Mixins和一种叫做面向复合编程的东西(据我所知甚至可能是同样的东西......)我也听说过/使用过AOP,而且我不确定它与此有何不同......
在语言无关的级别,mixin只是为类添加功能,更方便程序员并避免代码重复.抽象(基类)类形成is-a关系并允许多态.继承被过度使用的一个原因是,它是一种简单的方法来实现mixins而无需在不真正支持它们的语言中编写任何样板文件.问题在于,您将多态性is-a关系声明为副作用,从而使您的API更加混乱,并可能增加歧义.因此,像D和Ruby这样的新语言支持mixins作为本机特性,允许一种方便的方法向类添加一堆功能而不声明多态is-a关系.