我刚刚发现一篇关于 Java 框架的文章,它显然允许它支持Mixins和一种叫做面向复合编程的东西(据我所知,这甚至可能是同一件事......)我也听说过/使用过 AOP,而且我不确定它与此有何不同...
leeand00
问问题
3574 次
2 回答
28
在与语言无关的级别上,mixin 只是为类添加功能,更多的是为了程序员的方便和避免代码重复。抽象(基)类形成一个 is-a 关系并允许多态性。过度使用继承的一个原因是,它是一种实现 mixin 的简单方法,无需用不真正支持它们的语言编写任何样板。问题是您将多态 is-a 关系声明为副作用,使您的 API 更加混乱并可能增加歧义。因此,像 D 和 Ruby 等较新的语言支持 mixins 作为本机特性,从而可以方便地向类添加一堆功能,而无需声明多态 is-a 关系。
于 2009-02-26T16:54:40.660 回答
0
Mixin 从来都不是独立的类。他们只是为您声明的类添加了一些功能。在 Python 中,它们可以很容易地被类装饰器应用。例如,您可以使用 Singleton mixin 装饰您的班级,使您的班级成为单身人士。
于 2009-02-26T17:35:39.703 回答