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