【发布时间】:2015-05-23 21:10:40
【问题描述】:
根据某些条件(而不是用不同的顺序再次编写它们)来操作顺序的最佳方法是什么?
假设有一个 Person 类,每个 Person 对象代表一个不同的人。
class Person{
int eatingPriority = 3;
int sleepingPriority = 2;
int recreationPriority = 1;
void eat() {/*eats*/}
void sleep() {/*sleeps*/}
void watchTv() {/*watches tv*/}
void satisfyNeeds() {
//HOW TO DO THIS
}
}
如何让satisfyNeeds() 方法根据优先级调用其他三个方法?
注意:我想明确指出,优先级可以因人而异。
【问题讨论】:
-
最简单的方法是使用 2 个方法创建一个抽象类:
getPriority()和run()。然后为每个活动创建一个实例。最后,您可以将这些活动的实例放在一个列表中,并按优先级对其进行排序。 -
@ArnaudDenoyelle 或使用
PriorityQueue -
有人问我这个程序的目的。我们正在努力寻找最简洁的方式来操纵程序的流程。在这个例子中,我们假设我们正在为一个有模拟人的游戏创建一个 AI。如果你又饿又累,你会先睡觉还是先吃饭?如果您的睡眠优先级较高,则您先睡觉,否则您在睡觉前吃饭。也可以即时更改优先级。我们可以衡量睡眠和食物需求,并以此为基础设定优先级。注意问题中的代码是为了演示问题的简化版本