gpt4 book ai didi

java - 可配置系统的设计模式

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:46 25 4
gpt4 key购买 nike

我有一个有趣的设计问题,我将尝试在下面的玩具问题中进行简化:

我希望设计一个系统,其输出将是基于特定输入和中间处理的学生对象。流程如下:我有一个教室列表作为一种输入。要生成输出,处理步骤是:

  1. 按 X 岁以下(比如说 10 岁)的学生筛选每个教室
  2. 按此层次顺序的任意排列对过滤结果进行排序:高度、体重、臂长
  3. 返回前 8 名学生。

另一个输入可以简单地是我已经拥有并希望包含在结果中的学生列表。例如:输入 1:3 名学生的列表,输入 2:将运行上述处理步骤的 2 个教室的列表。

设计这样一个输入为的系统的最佳方法是什么:

  • 输入类型{student list|classroom list},
  • 过滤类型{age|height|etc},
  • 排序{高度、体重、臂长的任意排序},
  • returnNum{返回多少学生}

系统应该足够灵活以适应更多的输入类型和更多的排序顺序条目{即。按鞋码对学生进行排序}。我可以使用什么数据结构来为本节的每个部分建模(即表示排序顺序标准的最佳方式是什么?)是否有适合这些需求的设计模式?非常感谢您对架构设计的任何帮助!

最佳答案

好吧,您的建议可以使用 Java 8 流轻松完成,所以我想您可以遵循的一种模式是 pipeline 的模式。 .您也可以使用 internal iterators 来实现它:

List<Student> found = Stream.of(student1, student2, student3, ..., studentn)
.filter(s -> s.getAge() > 100)
.sorted(Comparator.comparing(Student::getHeight).thenComparing(Student::getWeight))
.limit(10)
.collect(Collectors.toList());

关于java - 可配置系统的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33333183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com