Какой шаблон / имя я должен использовать? - PullRequest
1 голос
/ 16 декабря 2010

Я создал класс Singleton, который обрабатывает тексты моего проекта. Какое уместное название класса Singleton, как это?

  • TextManager
  • TextHandler
  • TextController

Есть ли разница в значении этих имен?

UPDATE: Класс сохраняет текст проекта в формате xml и имеет метод для возврата правильного текста.

function getText(uid : String) : String

Ответы [ 8 ]

5 голосов
/ 17 декабря 2010

Полагаю, это не касается добавления / удаления / ... (-> управления) текстов (возможно, просто загрузки), поэтому это не "настоящий" Менеджер .

Он также не " контролирует " тексты (что-то "Вы доступны только из ...", "Вернуть другое значение для этого ключа, если ... «).

Класс предоставляет вам текстов.

Полагаю, это какой-то провайдер локализованного текста , верно?

Так почему бы вам не назвать это LocalizedTextProvider?

4 голосов
/ 16 декабря 2010

Я обычно называю что-то вроде этого

TextUtility

или

TextHelper

проблема с 'обработчиком' заключается в том, что он подразумевает некоторую обработку событий То же самое с «Контроллером», оно имеет значение в другом контексте.

3 голосов
/ 16 декабря 2010

Я считаю, что контроллер «зарезервирован» для модели MVC, но я могу ошибаться. TextHandler и TextManager могут быть лучше, но, по крайней мере, там, где я работаю, «Менеджер» в сервисе / классе, как правило, не рекомендуется, поскольку предполагается, что каждый класс «управляет» чем-то (хотя это может быть только для конкретной культуры). 1001 *

Я бы проголосовал за TextHandler из этих трех. Это также может немного зависеть от вашего языка программирования.

2 голосов
/ 18 декабря 2010

Для меня это звучит как услуга или хранилище ...

TextService или TextRepository?TextModel?

Но позвольте мне немного вернуться назад ... Шаблон Singleton - довольно плохой способ получить доступ к чему-то подобному.Просто гуглите "Проблемы синглтон-паттернов", если хотите понять, о чем я говорю.Кроме того, в AS3 у вас нет закрытых конструкторов, поэтому вы не можете реализовать шаблон Singleton в чистом виде.

Вместо этого я действительно предпочитаю композицию с помощью контейнеров "Inversion of Control" (IoC).Есть много их для ActionScript.Они могут быть очень легкими, но они очень элегантно отделяют ваши компоненты.

Извините, что делюсь своими мыслями здесь ... ymmv:)

РЕДАКТИРОВАТЬ - Подробнее об устранении Singletonpattern

Я написал о нескольких стратегиях по устранению одиночных кодов в вашем коде.Эта статья была написана для C #, но применяются все те же принципы.В этой статье я не буду подробно говорить о контейнерах IoC.

Вот довольно хорошая статья о IoC во Flex .Кроме того, несколько платформ предоставляют вам возможности IoC:

1 голос
/ 17 декабря 2010

Как обычно у меня Handler в контексте обработки событий / сообщений.Контроллер для действий и вещей MVC, я бы пошел с чем-то другим:

  • TextResources.get (ключ)
  • I18n.get (ключ) (если ваш класс фактически используется дляинтернационализация)

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

1 голос
/ 16 декабря 2010

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

0 голосов
/ 16 декабря 2010

Почему бы и нет: ProjectNameTexts

FooTexts.getInstance().getText('hello_world');
0 голосов
/ 16 декабря 2010

TextCache? Похоже, вы просто используете его для хранения и извлечения данных ...

...