Java:Mixin实现类

时间:2017-11-17 09:16:21

标签: java mixins

我在几个名为 Mixin 的代码库类中看到过以下评论:

//Mixin style implementation
public class DetachableMixin implements Detachable {}

这种实施方式下的概念是什么?

2 个答案:

答案 0 :(得分:4)

这是来自Joshua Bloch“Efective Java”的qoute(我不认为,我可以自己解释一下):

  

接口非常适合定义mixins。松散地说,mixin是一种类型   一个类除了声明它提供的“主要类型”之外还可以实现   一些可选行为。例如,Comparable是一个mixin接口   允许类声明其实例是相对于其他实例进行的   可比对象。这样的界面被称为mixin,因为它允许   可选功能,以“混入”类型的主要功能。   抽象类不能用于定义mixin,原因与它们不能相同   被改装到现有的类:一个类不能有多个父类,和   在类层次结构中没有合理的位置来插入mixin。

答案 1 :(得分:2)

另一个答案是现场,但值得指出的是其他JVM语言更进一步。

示例的Scala有traits - 基本上是“接口”与方法实现。在scala中,您可以一个类与多个特征混合在一起,从而允许从几个不同的“地方”继承行为

基本上与Java使用Java 8相同的概念,您知道可以将默认方法行为添加到接口。并且为了记录:如果我没记错,Java8接口和默认方法意味着在Java语言中引入完整的“mixin”概念。 的想法是您应该使用此功能通过后门实现多重继承。从Stuart Mark看到这个冗长的answer,这是推动Java语言发展的人之一。他们说:

  

默认方法的目的是使接口在首次发布后以兼容的方式进化。