我有一个非常大的Android聊天应用程序的监听器界面。我还有一个适用于侦听器的适配器,使用空方法。
这是:
public static interface Listener {
public void connectionStarted(Server server);
public void onConnected(Server server);
public void onDisconnected(Server server, DisconnectType type);
public void onReconnectStarting(Server server, int reconnectAttempt);
public void onReconnectStarted(Server server, int reconnectAttempt);
public void onReconnectEnded(Server server, int numReconnects);
public void onReconnectCanceled(Server server);
public void onRegistered(Server server);
public void onMessage(Server server, Message msg);
public void onQueryMessage(Server server, User user, String hostmask, String msg);
public void joinedChannel(Server server, Channel channel);
public void partedChannel(Server server, Channel channel);
public void onNames(Server server, List<String> batch);
public void onNamesEnd(Server server);
public void onListStart(Server server);
public void onList(Server server, ListEntry entry);
public void onListEnd(Server server);
public void onIsOn(Server server, List<String> nicks);
public void onWho(Server server, WhoData data);
public void onWhoFailed(Server server, String nick);
public void onWhoIs(Server server, WhoisData data);
public void onWhoIsFailed(Server server, String nick);
public void onWhoWas(Server server, WhoWasData data);
public void onWhoWasFailed(Server server, String nick);
public void onCTCPVersion(Server server, String nick, String hostmask, String version);
public void onCTCPPing(Server server, String nick, String hostmask, String ping);
public void onCTCPTime(Server server, String nick, String hostmask, String time);
public void onNotice(Server server, String nick, String hostmask, String message);
public void onNickInUse(Server server, String nick);
public void myNickChanged(Server server, String oldNick, String newNick, boolean onRegistered);
public void onSASLAuthenticationStarted(Server server);
}
例如,如果你看一下监听器,它有一个onMessage() - 方法,它被调用了很多(如果用户在很多聊天频道中)。并且这些“无操作”方法调用被重定向到许多完全不相关的侦听器。
我很确定Oracle的JVM足够聪明,可以优化所有这些无操作方法调用,但我不知道Dalvik VM是否属于这种情况。
从性能和可维护性的角度来看,您认为我应该将侦听器重构为更小的接口(例如ConnectionListener,MessageListener,JoinListener等)吗?