Где разместить общие методы


9

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

Однако мне это не нравится.

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

Прежде всего, что я должен назвать класс. Я хочу избежать имени глобала, потому что боюсь, что сопровождающие поймут неверное представление.

Кроме того, как я должен рассмотреть разделение такого набора методов, чтобы поведение могло изменяться и адаптироваться?

Набор методов содержит такие вещи, как:

  • Таблицы преобразования
  • Взаимодействие с буфером обмена
  • Управление встроенными шрифтами
  • Общие методы рисования
  • Предоставление интерфейса с доступом к часто используемым ресурсам

Это как чистые методы Util, которые не сохраняют состояние или они сохраняют состояние?
TheLQ

+1 за то, что не попал в одиночную ловушку.
Калеб

@TheLQ Они не обязательно сохранят состояние, но для удобства будут хранить постоянные данные (например, диаграммы преобразования).
Ли Лувьер

Ответы:


4

Пространство имен может быть [application].Common.Shared

Классы могут быть названы:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Я бы разбил классы, потому что, похоже, они делают разные вещи.


1

Если вы собираетесь сделать один экземпляр, у вас в значительной степени есть синглтон. Кроме того, то, о чем люди обычно говорили, говоря о одноэлементной ловушке, это то, что синглтоны являются глобальными, и большинство классов лучше не быть глобальными. Таким образом, вы могли бы также иметь синглтон. Если вы можете разумно передать интерфейс объектам, которые могут захотеть вызвать его, он не будет глобальным.

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

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


1

Обычно я помещаю эти типы вещей в их собственные имена сборок, например, «foo.Common» в пространствах имен, таких как «foo.Common.Collections» или «foo.common.UI» и т. Д., Затем я могу ссылаться на сборку в любом проекте. Мне они нужны.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.