Все методы класса - статические. Это плохо?
От: Аноним  
Дата: 04.03.08 18:34
Оценка:
Есть класс допустим Tovar.
Класс содержал определенную информацию о конкретном товаре и методы по ее обработке.
Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним.
Сейчас нужно сделать кеширование информации о товаре.
Создал внутри класса Tovar кэш.
По айдишнику товара сохраняю в кэше информацию.
И получается что все методы класса Tovar становятся статическими.
Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией.
Это плохо что класс стал содержать только статические методы?
Чем вообще может грозить переделка класса в кеш со статическими методами?
Re: Все методы класса - статические. Это плохо?
От: Дм.Григорьев  
Дата: 04.03.08 19:16
Оценка: 6 (1)
Здравствуйте, <Аноним>,

Ты нарушаешь Single Responsibility Principle. Товар должен быть отдельно, кеш отдельно. Рекомендую немного поработать с Hibernate, в т.ч. с кешем второго уровня, чтобы прочувствовать один из вариантов нормальной архитектуры.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[2]: Все методы класса - статические. Это плохо?
От: Аноним  
Дата: 05.03.08 07:34
Оценка:
ДГ>Ты нарушаешь Single Responsibility Principle. Товар должен быть отдельно, кеш отдельно. Рекомендую немного поработать с Hibernate, в т.ч. с кешем второго уровня, чтобы прочувствовать один из вариантов нормальной архитектуры.

Ну там не совсем товар.
Там класс, который возвращает характеристики указанного товара.

Хибернейт разве что для самообучения можно попробовать — использовать его мы не будем.
Re: Все методы класса - статические. Это плохо?
От: leith  
Дата: 05.03.08 10:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть класс допустим Tovar.

А>Класс содержал определенную информацию о конкретном товаре и методы по ее обработке.
А>Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним.
А>Сейчас нужно сделать кеширование информации о товаре.
А>Создал внутри класса Tovar кэш.
А>По айдишнику товара сохраняю в кэше информацию.
А>И получается что все методы класса Tovar становятся статическими.
А>Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией.
А>Это плохо что класс стал содержать только статические методы?
А>Чем вообще может грозить переделка класса в кеш со статическими методами?

Всё это очень похоже на паттерн flyweight
Re: Все методы класса - статические. Это плохо?
От: Аноним  
Дата: 05.03.08 14:18
Оценка: -2
Посмотри на ehcache, который, кстати, используется в хибернейте
http://sourceforge.net/projects/ehcache/

А вообще, если не заморачиватся, то это нормально и страшного ничего нет.
Если хочешь лучше и гибче — конвертируй свой класс в Singleton.
Re: Все методы класса - статические. Это плохо?
От: tavr  
Дата: 07.03.08 12:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть класс допустим Tovar.

А>Класс содержал определенную информацию о конкретном товаре и методы по ее обработке.
А>Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним.
А>Сейчас нужно сделать кеширование информации о товаре.
А>Создал внутри класса Tovar кэш.
А>По айдишнику товара сохраняю в кэше информацию.
А>И получается что все методы класса Tovar становятся статическими.
А>Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией.
А>Это плохо что класс стал содержать только статические методы?
А>Чем вообще может грозить переделка класса в кеш со статическими методами?
думаю, тебе лучше разделить понятие сущности и сервиса
сущность (твой Tovar) хранит только данные товара и методы, непосредственно с ним связанные
операции манипулирования сущностью относятся к сервису
если, например, у сервиса запрашивают товар по id, то его дело вернуть Tovar, а как это сделать, он решает сам:
лезть ли ему в базу, взять ли из кеша или вызвать другой сервис

как уже говорили, для кеша хорошо использовать ehcache
Re: Все методы класса - статические. Это плохо?
От: RI Украина  
Дата: 07.03.08 14:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть класс допустим Tovar.

А>Класс содержал определенную информацию о конкретном товаре и методы по ее обработке.
А>Инстанс класса создавался как член другого класса и сущестовал вместе с ним, уничтожался тоже вместе с ним.
А>Сейчас нужно сделать кеширование информации о товаре.
А>Создал внутри класса Tovar кэш.
А>По айдишнику товара сохраняю в кэше информацию.
А>И получается что все методы класса Tovar становятся статическими.
А>Везде в статические методы я передаю айдишник товара и дальше что-то делаю с полученной информацией.
А>Это плохо что класс стал содержать только статические методы?
А>Чем вообще может грозить переделка класса в кеш со статическими методами?

Да, плохо. Потому что это почти уход от ООП к функциональному программированию.
Re[2]: Все методы класса - статические. Это плохо?
От: Blazkowicz Россия  
Дата: 07.03.08 15:03
Оценка: +1
Здравствуйте, RI, Вы писали:

RI>Да, плохо. Потому что это почти уход от ООП к функциональному программированию.

к процедурному
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.