【发布时间】:2018-09-24 17:58:53
【问题描述】:
我想知道我使用的方法是否最适合这种情况。
我正在开发一个 REST API,并且我有一个必须返回人员对象列表的端点。例如,假设 person 类有年龄 (int)、头发和素食主义者(都是布尔值)。
该端点应该返回按年龄排序的人(首先是年轻的),如果他们的年龄相同,然后是有头发的人,然后是素食主义者。
排序策略可以更改,因为它们是从配置文件中读取的。所以端点可以首先返回素食者,然后是有头发的人,然后是年龄。
我看到有不同的策略可以应用,我认为最好的方法是使用策略模式(我也考虑过装饰器,但由于策略可以更改,我不知道如何应用它)。我创建了一个返回比较器的接口,然后我有了可以应用的策略实现(头发、年龄和素食主义者),它返回一个比较器。我从配置文件中读取策略并将它们保存到字符串数组中。
到目前为止,我只使用了三种策略
array.stream.sorted(strategy[0].compare().thenComparing(strategy[1].compare()).thencomparing...)
但我看到一个明显的问题,即这是不可扩展的,因为如果我再添加一个策略,它将不会被处理。
所以我在这里有两个问题:
策略模式是这种排序情况的最佳设计模式吗?
如何继续使应用的策略数组更通用?
【问题讨论】:
标签: java design-patterns strategy-pattern