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

start [/forum/topic.php?fid=59&msg=34741883&tid=2144845]: |
0ms |
get settings: |
15ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
54ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 302ms |
| total: | 531ms |

| 0 / 0 |
