在这个服务器应用程序中,我正在扩展一个带有方法的类 EventManager:
pubic void addEvent(Event event, int time){ // code to process handling of events }
事件是和接口。我有几个类,我需要在其中运行一个使用许多相同方法的非常相似的事件。我没有在我运行类似事件的每个类中重写这些方法中的每一个,而是认为如果我创建了实现事件并在其中包含每个方法的公共类:
public class someEvent impements Event{
public void send(String message){
for (int i = 0; i < Server.playerHandler.players.length; i++) {
if (Server.playerHandler.players[i] != null) {
if (Server.playerHandler.players[i].inPcGame()) {
Client c = (Client)Server.playerHandler.players[i];
c.sendMessage(message);
}
}
}
}
public void spawn(int[] npcs, wave){
int x = 4234;
int y = 2343;
int z = 1;
int health = 10 * wave;
int maxHit = 5 * wave ;
int attack = 150;
int defence = 200;
NpcHandler.getNpcHandler().spawnNpc(c, 1, x, y, z, 0, health, maxHit, attack, defence, true, false);
}
// Event method override
public void executeEvent(){
spawn(npcList, waveNum);
send(message);
}
}
然后使用在每个运行事件的类中创建对象。然后将这些对象传递给 EventManager。
我自学并且仍在学习,我的朋友也自学,但编程时间更长,他说我应该这样做并且应该这样做:
import sever.event.EventManager;
public class someClass {
public void send(String message){
for (int i = 0; i < Server.playerHandler.players.length; i++) {
if (Server.playerHandler.players[i] != null) {
if (Server.playerHandler.players[i].inPcGame()) {
Client c = (Client)Server.playerHandler.players[i];
c.sendMessage(message);
}
}
}
}
public void spawn(int[] npcs, wave){
int x = 4234;
int y = 2343;
int z = 1;
int health = 10 * wave;
int maxHit = 5 * wave ;
int attack = 150;
int defence = 200;
NpcHandler.getNpcHandler().spawnNpc(c, 1, x, y, z, 0, health, maxHit, attack, defence, true, false);
}
EventManager.getSingleton().addEvent( new Event(){
public void executeEvent(){
spawn();
send();
}}, 12000
);
}
并在每个类中执行此操作,重写我使用事件的每个类中的每个方法。
他坚持认为我的方式使用更多内存并且是 CPU 密集型的。我不明白我的方式如何在 CPU 上更重,而不是比他的方式更不密集。哪种方式是正确的方式,为什么?