
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.08.2007, 02:22:57
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
Условие: предполагается наличие множества однотипных объектов (некие "команды"), которые имеют метод init и execute. И должны иметь статический метод getDescription, который будет просто возвращать описание того, что этот класс умеет делать (фактически, это похоже на man <command> - команда сама себя описывает). Хочется написать либо абстрактный класс-прародитель всех комманд, либо интерфейс, но ни там, ни там недопустимы функции с модификатором static. Как решается данная задача? Или все идет на уровне соглашений, что такой-то метод должен быть статическим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2007, 10:51:26
|
|||
|---|---|---|---|
|
|||
Статический метод в прародителе. |
|||
|
#18+
pamirУсловие: предполагается наличие множества однотипных объектов (некие "команды"), которые имеют метод init и execute. И должны иметь статический метод getDescription, который будет просто возвращать описание того, что этот класс умеет делать (фактически, это похоже на man <command> - команда сама себя описывает). Хочется написать либо абстрактный класс-прародитель всех комманд, либо интерфейс, но ни там, ни там недопустимы функции с модификатором static. Как решается данная задача? Или все идет на уровне соглашений, что такой-то метод должен быть статическим? Почему бы сделать этот метод не абстрактым и внутри него написать "Информация по этому классу не описана. Идите в жопу" и вызывать исключение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2007, 13:31:17
|
|||
|---|---|---|---|
|
|||
Статический метод в прародителе. |
|||
|
#18+
В абстрактном классе можете объявить сколько угодно статических методов и полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2007, 13:45:32
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
pamirУсловие: предполагается наличие множества однотипных объектов (некие "команды"), которые имеют метод init и execute. И должны иметь статический метод getDescription, который будет просто возвращать описание того, что этот класс умеет делать (фактически, это похоже на man <command> - команда сама себя описывает). Хочется написать либо абстрактный класс-прародитель всех комманд, либо интерфейс, но ни там, ни там недопустимы функции с модификатором static. Как решается данная задача? Или все идет на уровне соглашений, что такой-то метод должен быть статическим? В Вашей архитектуре будет избыточность в дублировании реализации, если правильно понял Вашу задачу Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Надо перепроектировать архитектуру, взять другой паттерн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 11:18:09
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
Valery ShiskinВ абстрактном классе можете объявить сколько угодно статических методов и полей.Но не статических. Сделал как советовал Хрюхрюшкин. Правда, это не обязывает потомков реализовывать свой метод, т.е. возможна ситуация, когда это метод не будет реализован и будет возвращать то, что прописано у абстрактного класса. Но это не критично. User12345Надо перепроектировать архитектуру, взять другой паттерн.Если не затруднит - давайте поговорим на эту тему. Что вы можете посоветовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 11:21:05
|
|||
|---|---|---|---|
|
|||
Статический метод в прародителе. |
|||
|
#18+
User12345 wrote: > В Вашей архитектуре будет избыточность в дублировании реализации, если > правильно понял Вашу задачу > > *class* AbstractCommand { > *abstract* String getDescription(); > } > Надо перепроектировать архитектуру, взять другой паттерн. А какой тут надо брать? Мне вот нравится вариант как в delphi - виртуальные статические методы. Но увы... -- Алексей Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 11:55:50
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
пачиму б вместо абстрактного статического метода не использовать абстрактный. оверхед от создания экземпляра не должен быть большим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 12:05:45
|
|||
|---|---|---|---|
|
|||
Статический метод в прародителе. |
|||
|
#18+
pamirПравда, это не обязывает потомков реализовывать свой метод, т.е. возможна ситуация, когда это метод не будет реализован и будет возвращать то, что прописано у абстрактного класса. Но это не критично. Это зависит исключительно от вас — как у вас идет работа с этими классами. Что касается меня, то я не припомню необходимости выписывать статические методы с неким внутренним описанием (например, для наших т.н. атомов тарификации) — вполне устраивают и нестатические. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 13:21:26
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
pamir Valery ShiskinВ абстрактном классе можете объявить сколько угодно статических методов и полей.Но не статических. Отдых в деревне расслабляет. Я хотел сказать "но не абстрактных" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 13:29:42
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
exppпачиму б вместо абстрактного статического метода не использовать абстрактный. оверхед от создания экземпляра не должен быть большим Как это выглядит у меня - есть пакет (в отдельном jar), который содержит много-много классов "команд". Если пользователь хочет узнать какие команды есть в системе и как ими пользоваться, он инициирует запрос, "help", который перебирает все классы и дергает вышеозначенный метод. Формирует из этого ответ пользователю и вываливает его. Мне показалось слишком грубым - для этого создавать по экземпляру класса. Поскольку это моя домашняя система, и пишу ее я один, то мне вполне подходит то решение, которое я выбрал. А спрашивал я для того, чтобы узнать, как это делается. Всегда хочется сделать изящно и правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 13:35:51
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
PS. Если кто помнит времена ФИДО, то там можно было послать роботу своего нода запрос help, который вываливал команды робота, с помощью которых уже можно было подписываться и отписываться от эх и т.п. Здесь нечто похожее - тоже мейл-робот, но для других целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2007, 14:47:12
|
|||
|---|---|---|---|
Статический метод в прародителе. |
|||
|
#18+
тут конечно много вариантов есть ... как jar перебирается? думаю ничего страшного в создании экземпляров нет. Они так сразу пулиться могут как вариант вынести эту мета информацию в отдельный класс-фабрику, файло. а может просто определить соглашение про константу в классе команды и дёргать её рефлексией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2144845]: |
0ms |
get settings: |
11ms |
get forum list: |
23ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
74ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 311ms |
| total: | 533ms |

| 0 / 0 |
