Cra*_*lus 6 java oop design-patterns domain-driven-design
在域中建模优先级/首选项的最佳方法是什么?
例如,假设我有一个Person代表一个人的课程并且有一些偏好,例如PersonX喜欢披萨,spaggetti和omelete,实际上他更喜欢spagetti比披萨.
这些最好的模型如何?
第一个想法只是将它们放入List(作为成员变量Person)根据插入顺序保持首选项,例如列表中的第一个是最喜欢的,然后列表中的第二个是最喜欢的等等但是这似乎是我最终太乏味了.例如,当我想对偏好等进行搜索或关联时,
或许对这样的问题有一个标准的方法吗?
您可以按照您的建议使用该列表,并向您的 Person 类添加一个方法,该Comparator<Preference>方法将返回一个能够比较该人的 2 个首选项的方法:
Person somebody.addPreference(pizzaPreference);
Person somebody.addPreference(omelettePreference);
....
Comparator<Preference> c = somebody.getPreferenceComparator();
boolean prefersPizzaOverOmelette = (c.compare(pizzaPreference, omelettePreference) > 0);
boolean hasNoPreferenceBetweenPizzaAndOmelette = (c.compare(pizzaPreference, omelettePreference) == 0);
Run Code Online (Sandbox Code Playgroud)
比较器将简单地检查列表中首选项的索引(如果它包含该首选项等)。