Мне нужно объединить несколько методов без добавления некоторых членов данных. Есть идеи? - PullRequest
1 голос
/ 28 ноября 2008

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

Должен ли я использовать:

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

На самом деле я пишу на C ++, но я думаю, что этот вопрос не зависит от языка разработки.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2008

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

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

  • В классах вы можете установить некоторые функции как частные, защищенные или общедоступные. Например, у вас могут быть частные функции для выполнения общих задач, которые необходимы для ваших общих функций.
  • Пространства имен могут быть расширены, а их определения распределены по нескольким файлам.
  • Классы могут быть разделены на подклассы (и, следовательно, их функциональность может быть расширена). У вас может быть модель с защищенными статическими функциями и клиентскими классами, подклассы этого класса для лучшей инкапсуляции.
2 голосов
/ 28 ноября 2008

В C ++ я бы использовал служебное пространство имен, а не класс с только статическими методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...