Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site

tcc-case-title

Старый учитель Банзен вызвался присмотреть за кланом Паука во время странствий учителя Суку, но пока месяцы тянулись получаемый опыт портил ему нервы. В одном критически важном приложении компоненты, написанные разными разработчиками, каким-то образом влияли на работу друг друга, что приводило к странным ошибкам времени выполнения.

Отчаявшийся Банзен раздобыл у учителя Бавана бутылку жёлтого вина, сразу же ополовинил её и позвал своего ученика Джишина.

- - -

Неделю спустя Джишин сообщил о своих достижениях:

“Наша проблема заключается в контекстах сеанса и запроса Java-сервлета, где мы храним данные о состоянии и отображении. Эти контексты являются хэш-таблицами, в качестве значений которых используются объекты, а в качестве ключей - строки по выбору разработчика. Так как каждый разработчик выбирал ключи, не советуясь со своими коллегами, то компонент иногда может менять значения контекста, используемые другим компонентом. И часто на объект совершенно другого типа”.

“И каким будет решение?” - спросил Банзен, откупоривая бутылку.

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

“Похоже на методы свойств”, - заметил Банзен.

“Точно!” - сказал Джишин. - “В настоящее время я разрабатываю соглашения по именованию ключей, чтобы каждая подсистема могла иметь свой собственный класс ContextUtil, предоставляющий по мере необходимости дополнительные константы и статические методы”.

“Похоже на подклассы”, - заметил Банзен.

“Точно!” - снова сказал Джишин.

“Прекрасно!” - сказал Банзен, осушая стакан. - “Итак, за семь дней, с помощью простых констант и функций, используемых в стандартной хэш-таблице Java, мы изобрели... класс Object”.