Comments 14
> Готовлю статью про данный паттерн в Java.

Поздновато уже как бы. Начиная с Java 1.5 перечисления являются частью языка, по-этому данный паттерн уже не особо актуален применимо к Java ИМХО.
Да, я знаю, что начиная с версии Java 1.5 перечисления являются частью языка. Я просто хотел более подробно расписать про возможности использования. Кроме того расписать данный паттерн для тех, кто не может использовать возможности Java 1.5. Поверьте мне, такие ситуации бывает.
в яваскрипте:

var seasonType={
winter: Object( 'winter season' ),
spring: Object( 'spring season' ),
summer: Object( 'summer season' ),
autumn: Object( 'autumn season' )
};

TypeSafe нужен только в типизированных языках. Данный паттерн позволяет ещё на этапе написания кода не допускать мелких оплошностей, которые потом очень тяжело найти и исправить. А если вы пользуетесь ещё и полноценной IDE (я использую Eclipse со всеми «примочками»), то тогда данный паттерн для вас просто незаменим.
Да дело не в том нужен или нет, дело в том что если язык динамический то Enumerations уже все равно никак не TypeSafe (ну разве что если специально добавить проверки типа там где используются значения, что не имеет особого смысла).
typesafe противоречит полиморфизму. а вот valuesafe вполне себе получается.
А можно по-подробнее про этот паттерн. Что я не могу найти информации про него.
И каким образом TypeSafe противоречит полиморфизму? (это не подковырка, а вопрос из из чистого любопытства в образовательных целях)
ну, там дальше, если написать:
if( weather === weatherType.winter )
, то код выполнится, если переданн именно тот сымый объект и ни что другое.
в яваскрипте, правда, нельзя использовать объекты в качестве ключей хэша. а вот в питоне — можно.
насчёт типов — это вообще, а не конкретно к данному случаю. типы определяют внутреннюю структуру объекта, а вот интерфейс — его возможности общения с внешним миром. а полиморфизм предполагает «не важно, что там у него внутри — важно, что он умеет»
Ничего не понял. :)

В данном случае все переменные типа статические. Две одинаковые константы ссылаются на одно и тоже. Тут я проблемы не вижу.

Ты писал: «typesafe противоречит полиморфизму. а вот valuesafe вполне себе получается.»

Потом написал: «насчёт типов — это вообще, а не конкретно к данному случаю. типы определяют внутреннюю структуру объекта, а вот интерфейс — его возможности общения с внешним миром. а полиморфизм предполагает «не важно, что там у него внутри — важно, что он умеет»»

Что такое полиморфизм я знаю, а даже если бы и не знал :) то заглянул бы в справочник.

Так что вопрос открыт. Пожалуйста по подробнее, чем данный паттерн мешает полиморфизму. Желательно нормальные, развёрнутые аргументы. Я не экстрасенс, не могу догадаться что ты имел ввиду. И где ты собрался использовать полиморфизм, в клиенте, который использует данное перечисление или же в купе с другими перечислениями.
type-safe и type-safe enumerations — разные вещи.
для «перечислений» вообще без разницы какого они типа или значения. важно, что они глобальны и человекочитаемы.
Спасибо. Засел сейчас за AS, и ваша статья пришлась очень кстати.
Only those users with full accounts are able to leave comments. Log in, please.