Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想这里需要一个适配器模式,但我似乎在重复方法实现的细节_Java_Design Patterns_Adapter - Fatal编程技术网

Java 我想这里需要一个适配器模式,但我似乎在重复方法实现的细节

Java 我想这里需要一个适配器模式,但我似乎在重复方法实现的细节,java,design-patterns,adapter,Java,Design Patterns,Adapter,您可以在下面看到,我有两个具体的类,它们可以共享通过抽象类提供的几乎所有实现细节。他们每个人只需要自己实现2-3种方法。然而,ImplOne也从InterfaceTwo实现,它还有1-2个方法要实现。我不想在ImplOne中提供与在AbstractImpl中完全相同的实现细节,但我现在在这里所做的似乎并不正确。在适配器模式中,从我看到的示例来看,对于正在调整的接口,实现细节似乎是重复的 InterfaceOne / \ InterfaceTwo Abs

您可以在下面看到,我有两个具体的类,它们可以共享通过抽象类提供的几乎所有实现细节。他们每个人只需要自己实现2-3种方法。然而,ImplOne也从InterfaceTwo实现,它还有1-2个方法要实现。我不想在ImplOne中提供与在AbstractImpl中完全相同的实现细节,但我现在在这里所做的似乎并不正确。在适配器模式中,从我看到的示例来看,对于正在调整的接口,实现细节似乎是重复的

       InterfaceOne
         /      \
InterfaceTwo  AbstractImpl
         \      /       \
          ImplOne      ImplTwo

这种情况没有问题。ImplOne必须实现interfaceOne或interfaceTwo中声明的所有方法,除非已经由abstractImpl实现。implOne还必须从abstractImpl实现抽象方法。作为练习,我建议创建一个没有方法的ImplOne,并让编译器告诉您需要实现哪些方法。

复制在哪里?我不明白为什么要复制实现。扩展一个实现InterfaceOne的抽象类,然后实现同样扩展InterfaceOne的InterfaceTwo,不是有什么不对吗?我不知道,但这似乎有点不对劲。这绝对没什么错。这只是类型信息。这些方法不必因此而重新实现。