Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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_Oop_Jpa 2.0_Ooad - Fatal编程技术网

Java 这是一个足够好的抽象还是我可以做得更好?

Java 这是一个足够好的抽象还是我可以做得更好?,java,oop,jpa-2.0,ooad,Java,Oop,Jpa 2.0,Ooad,需求:需求是拉取一组数据源。拉动是有序的,可以分组成小的子组 设计:每一次拉动都被抽象为一个步骤。子组表示为WaterwallStep,因为组中每个数据源的提取都是有条件的,并且遵循瀑布模型,即,如果组中的第一个数据源提取成功,则我将脱离组 问题 这是一个足够好的抽象还是我可以做得更好 如何在JPA2中表示这一点?我知道我们可以使用描述符来映射继承,但我主要关心的是waterwallstep到BasicStep之间的1对多关系 多谢各位 我认为您应该在这里使用复合模式。我认为每个步骤都应该处理对

需求:需求是拉取一组数据源。拉动是有序的,可以分组成小的子组

设计:每一次拉动都被抽象为一个步骤。子组表示为WaterwallStep,因为组中每个数据源的提取都是有条件的,并且遵循瀑布模型,即,如果组中的第一个数据源提取成功,则我将脱离组

问题

  • 这是一个足够好的抽象还是我可以做得更好
  • 如何在JPA2中表示这一点?我知道我们可以使用描述符来映射继承,但我主要关心的是waterwallstep到BasicStep之间的1对多关系
  • 多谢各位


    我认为您应该在这里使用复合模式。我认为每个步骤都应该处理对一组步骤的引用。如果您愿意,您可以将此集合移动到您的WaterwallStep,但它仍然应该是一个步骤集合,而不是BasicSteps和AbstractSteps

    关于JPA,您应该使用OneToMany注释。有很多使用此注释的示例


    祝你好运

    谢谢你的建议。我从复合模式开始;-)。但是有一些“行为”不适用于叶子,例如瀑布行为,记住liskov替换原则,我需要求助于这种设计。如果我想得太多,请告诉我;-)还有什么意见或建议吗?