2013-08-24 8 views
2

Я делаю mock-java langue, который имеет много методов. Я бы сгруппировал подобные методы вместе и поместил их в свой класс, но все методы должны расширять класс, который имеет дело с прерыванием данных. Каков наиболее эффективный способ, с точки зрения производительности исполнения, организовать их?Каков наиболее эффективный способ организовать множество методов?

Прямо сейчас это просто куча методов в одном классе (ListOfMethods) называется специальным методом с если-иначе заявления найти правильный метод, как:

public void methods(String name, String param) throws NumberFormatException, InterruptedException { 
    if (name.equals("systemexit")) SystemExit(param); 
    else if (name.equals("sleep")) sleep(param); 
} 
public void SystemExit(String param) 
{ 
    int exit=(int)Double.parseDouble(param); 
    System.exit(exit); 
} 
public void sleep(String param) throws NumberFormatException, InterruptedException 
{ 
    Thread.sleep((long)Double.parseDouble(param)); 
} 

Я не пытаюсь изменения этот формат, как только методы организованы. Я хочу сгруппировать их в классы, такие как математика и строки, но мне интересно, как это сделать?

  1. ListOfMethods может распространяться каждый класс. Проблема в том, что Java не поддерживает множественное наследование, поэтому класс 1 расширяет класс 2, который расширяет класс 4 и т. Д.
  2. ListOfMethods может импортировать каждый класс. Проблема в том, что все они должны расширить суперкласс. Это неэффективно?
  3. Размещение их в разных классах и статические методы (очень похожие на предыдущие).
  4. Просто оставив это как есть.

Я открыт для других предложений - я хочу сделать его максимально эффективным. Заранее спасибо.

Примечание: будут запущены сотни экземпляров этого класса - это всего лишь краткий пример реальной проблемы, поэтому я действительно не хочу тратить память.

+1

Что вы подразумеваете под эффективностью? Производительность выполнения? Время, необходимое для написания/поддержания кода? –

+0

вы можете проверить [функции guava] (https://code.google.com/p/guava-libraries/wiki/FunctionalExplained) – AdamSpurgin

+0

@Stephen C Производительность выполнения – TAAPSogeking

ответ

10

Мой совет будет ignore Эффективность исполнения на данный момент и сосредоточена на том, чтобы ваш язык работал. Когда он работает, проконсультируйтесь с ним и используйте это, чтобы решить, что нужно сделать (более) эффективным. Прямо сейчас невозможно предсказать, какова будет актуальная проблема эффективности. Усилия, которые вы тратите на этот вопрос, скорее всего, будут потрачены впустую.

Поэтому мое предложение является вариантом 4.

Или вариантом 5 - в первую очередь, выбрать подход, который вы думать собираетесь сделать запись и сохранение кода простейшего.

+0

Таким образом, ни один из них не будет действительно замедлять производительность во время выполнения. Для записи основная часть кода уже написана. – TAAPSogeking

+4

@TAAPSogeking - * «Таким образом, ни один из них не замедлит мою производительность во время выполнения». *. Я этого не говорил. То, что я сказал, что вы должны потратить свое время на ** более важные вещи ** ... пока. Получите что-то, прежде чем беспокоиться о производительности. –

+0

Внедрено – TAAPSogeking