2011-01-27 4 views
0

У меня есть два класса в моем Java-проекте, которые не связаны друг с другом (один наследует от Thread, а другой - пользовательский объект. Однако им нужно использовать одинаковые функция, которая принимает два аргумента String и делает soam файловыми файлами. Где лучше всего использовать эту функцию? Копирование дублирования является уродливым, но я также не хотел бы создавать целый новый класс только для этой функции.Использование функции в двух несвязанных классах Java

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

ответ

1

[функция], которая принимает два аргумента String, и делает SOEM записи файла вещи

Как и другие предложили, вы можете поместить эту функцию в отдельный класс, который как существующие классы могли затем доступ. Другие предложили назвать класс Utility или что-то подобное. Я рекомендую не, назвав класс таким образом. Мои возражения двоякие.

  • Можно было бы ожидать, что весь код в вашей программе был бы полезен. То есть у него была утилита, поэтому такое имя не передает никакой информации о классе.
  • Можно утверждать, что Utility является подходящим названием, потому что класс использовал другими пользователями. Но в этом случае имя описывает, как класс используется, а не то, что он делает. Классы должны быть названы тем, что они делают, а не как они используются, потому что то, как они используются, может меняться без изменения. Учтите, что Java имеет класс string, который может использоваться для хранения имени, описания или фрагмента текста. Класс делает вещи с «строкой символов»; он может использоваться или не использоваться для имени, поэтому string было хорошим именем для него, но name не было.

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

1

Создайте класс Utility и поместите в него все полезные утилиты.

+0

Дать целое слово Utility будет лучше, чем просто Util, но концепт же – mauris

+0

Можно было бы ожидать, что весь код в проекте, чтобы быть полезным и, следовательно, имеет * полезность *, поэтому присвоение имени класса «Утилита» было бы похоже на вызов переменной 'data' и метода' function'. Не очень информативный. – Raedwald

0

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

В качестве альтернативы создайте еще один класс для хранения всех ваших статических методов.

1

Звучит как идеальный кандидат для класса FileUtils, который имеет только статические функции. Взгляните на SwingUtilities, чтобы узнать, о чем я говорю.

0

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

Вторая часть - больше удовольствия - полезный класс - хорошая идея. Лучшей идеей может быть расширение того, что написал KitsuneYMG; Пусть ваш класс возьмет на себя ответственность за собственное чтение/письмо. Затем делегируйте операцию чтения/записи в класс утилиты.Это позволяет управлять чтением/записью независимо от остальной части файловых операций.

Просто мои 2c (+:.

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