Есть класс допустим Tovar.
Класс содержал определенную информацию о конкретном товаре и методы по ее обработке.
Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним.
Сейчас нужно сделать кеширование информации о товаре.
Создал внутри класса Tovar кэш.
По айдишнику товара сохраняю в кэше информацию.
И получается что все методы класса Tovar становятся статическими.
Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией.
Это плохо что класс стал содержать только статические методы?
Чем вообще может грозить переделка класса в кеш со статическими методами?
Ты нарушаешь Single Responsibility Principle. Товар должен быть отдельно, кеш отдельно. Рекомендую немного поработать с Hibernate, в т.ч. с кешем второго уровня, чтобы прочувствовать один из вариантов нормальной архитектуры.
Re[2]: Все методы класса - статические. Это плохо?
От:
Аноним
Дата:
05.03.08 07:34
Оценка:
ДГ>Ты нарушаешь Single Responsibility Principle. Товар должен быть отдельно, кеш отдельно. Рекомендую немного поработать с Hibernate, в т.ч. с кешем второго уровня, чтобы прочувствовать один из вариантов нормальной архитектуры.
Ну там не совсем товар.
Там класс, который возвращает характеристики указанного товара.
Хибернейт разве что для самообучения можно попробовать — использовать его мы не будем.
Здравствуйте, Аноним, Вы писали:
А>Есть класс допустим Tovar. А>Класс содержал определенную информацию о конкретном товаре и методы по ее обработке. А>Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним. А>Сейчас нужно сделать кеширование информации о товаре. А>Создал внутри класса Tovar кэш. А>По айдишнику товара сохраняю в кэше информацию. А>И получается что все методы класса Tovar становятся статическими. А>Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией. А>Это плохо что класс стал содержать только статические методы? А>Чем вообще может грозить переделка класса в кеш со статическими методами?
Здравствуйте, Аноним, Вы писали:
А>Есть класс допустим Tovar. А>Класс содержал определенную информацию о конкретном товаре и методы по ее обработке. А>Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним. А>Сейчас нужно сделать кеширование информации о товаре. А>Создал внутри класса Tovar кэш. А>По айдишнику товара сохраняю в кэше информацию. А>И получается что все методы класса Tovar становятся статическими. А>Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией. А>Это плохо что класс стал содержать только статические методы? А>Чем вообще может грозить переделка класса в кеш со статическими методами?
думаю, тебе лучше разделить понятие сущности и сервиса
сущность (твой Tovar) хранит только данные товара и методы, непосредственно с ним связанные
операции манипулирования сущностью относятся к сервису
если, например, у сервиса запрашивают товар по id, то его дело вернуть Tovar, а как это сделать, он решает сам:
лезть ли ему в базу, взять ли из кеша или вызвать другой сервис
как уже говорили, для кеша хорошо использовать ehcache
Здравствуйте, Аноним, Вы писали:
А>Есть класс допустим Tovar. А>Класс содержал определенную информацию о конкретном товаре и методы по ее обработке. А>Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним. А>Сейчас нужно сделать кеширование информации о товаре. А>Создал внутри класса Tovar кэш. А>По айдишнику товара сохраняю в кэше информацию. А>И получается что все методы класса Tovar становятся статическими. А>Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией. А>Это плохо что класс стал содержать только статические методы? А>Чем вообще может грозить переделка класса в кеш со статическими методами?
Да, плохо. Потому что это почти уход от ООП к функциональному программированию.
Re[2]: Все методы класса - статические. Это плохо?