2015-05-22 4 views
0

У меня есть простой вопрос. У меня есть класс, который не имеет каких-либо переменных, это просто класс, который имеет много функций void (которые отображают вещи и т. Д.). Когда я создаю объект этого класса, было бы лучше/эффективнее передавать этот один объект через все мои функции по мере продвижения программы или просто воссоздавать его каждый раз, когда программа переходит в новую функцию? Имея в виду, что объект не имеет переменных, которые необходимо сохранить. Заранее благодарю за любую помощь.Пропустить объект через или Создать новый объект?

+0

сделать класс статическим. Если все, что вы делаете, вызывает функции на нем, вы делаете что-то вроде Math.cos(); – t3dodson

+0

См. Также http://stackoverflow.com/questions/2671496/java-when-to-use-static-methods –

ответ

4

Имеет смысл, что класс имеет только статические функции и никакой экземпляр вообще не нужен. В любом случае у вас нет штата ...

+0

Черт, без каких-либо переменных в этом классе, в базовом смысле это набор статических функций. Единственное, что вы делаете, это скрывать эти функции от других, в зависимости от того, как объявлен класс. Согласовано. –

+0

Хорошо, как статический класс, как бы я назвал функции класса? –

+0

Большое спасибо, ребята, не подумали об этом. –

0

Для проблем с производительностью почти нет разницы. Передача объекта в качестве аргумента будет стоить вам (очень крошечный) бит во время выполнения. Объект воссоздания не будет (предполагая оптимизацию компилятора).

Однако, если вы когда-либо планируете ввести какое-либо состояние (поля) или имеете две реализации для тех методов void, вы должны передать объект, так как это значительно снижает стоимость рефакторинга.

Подведите итог: если ваш класс - это что-то вроде Math, где методы безгражданны по своей природе, придерживайтесь @Amit ответа и ставьте его. В противном случае, если ваш класс - это что-то вроде Canvas или Windows, и у вас есть мысли о его внедрении другим способом позже, лучше передайте его по ссылке, чтобы вы могли заменить его абстрактным интерфейсом и обеспечить фактическую реализацию.

1

Если функции в пустом классе иначе никогда не меняются ... рассмотрим их статичность. или помещать их в пространство имен вместо класса.

с другой стороны ... если функции установлены один раз во время выполнения, например, вы выбираете, какие функции отображения использовать на основе os, а затем сохраняйте их в глобальном. или одноэлементный.

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

Смежные вопросы