powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Статический метод в прародителе.
13 сообщений из 13, страница 1 из 1
Статический метод в прародителе.
    #34736756
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условие: предполагается наличие множества однотипных объектов (некие "команды"), которые имеют метод init и execute. И должны иметь статический метод getDescription, который будет просто возвращать описание того, что этот класс умеет делать (фактически, это похоже на man <command> - команда сама себя описывает).
Хочется написать либо абстрактный класс-прародитель всех комманд, либо интерфейс, но ни там, ни там недопустимы функции с модификатором static.
Как решается данная задача? Или все идет на уровне соглашений, что такой-то метод должен быть статическим?
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34736818
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirУсловие: предполагается наличие множества однотипных объектов (некие "команды"), которые имеют метод init и execute. И должны иметь статический метод getDescription, который будет просто возвращать описание того, что этот класс умеет делать (фактически, это похоже на man <command> - команда сама себя описывает).
Хочется написать либо абстрактный класс-прародитель всех комманд, либо интерфейс, но ни там, ни там недопустимы функции с модификатором static.
Как решается данная задача? Или все идет на уровне соглашений, что такой-то метод должен быть статическим?
Почему бы сделать этот метод не абстрактым и внутри него написать "Информация по этому классу не описана. Идите в жопу" и вызывать исключение?
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34738374
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В абстрактном классе можете объявить сколько угодно статических методов и полей.
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34738423
user12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
 class  AbstractCommand {
    abstract  String getDescription();
}

 class  Copy  extends  AbstractCommand {
    final   static  String DESC = "copy command";
   String getDescription() {
           return  DESC;
   }
}

 class  Paste  extends  AbstractCommand {
    final   static  String DESC = "paste command";
   String getDescription() {
           return  DESC;
   }
}

Надо перепроектировать архитектуру, взять другой паттерн.
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34740934
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinВ абстрактном классе можете объявить сколько угодно статических методов и полей.Но не статических.
Сделал как советовал Хрюхрюшкин. Правда, это не обязывает потомков реализовывать свой метод, т.е. возможна ситуация, когда это метод не будет реализован и будет возвращать то, что прописано у абстрактного класса. Но это не критично.

User12345Надо перепроектировать архитектуру, взять другой паттерн.Если не затруднит - давайте поговорим на эту тему. Что вы можете посоветовать?
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34740948
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
User12345 wrote:

> В Вашей архитектуре будет избыточность в дублировании реализации, если
> правильно понял Вашу задачу
>
> *class* AbstractCommand {
> *abstract* String getDescription();
> }
> Надо перепроектировать архитектуру, взять другой паттерн.

А какой тут надо брать?


Мне вот нравится вариант как в delphi -
виртуальные статические методы. Но увы...

--
Алексей
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741099
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пачиму б вместо абстрактного статического метода не использовать абстрактный. оверхед от создания экземпляра не должен быть большим
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741149
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirПравда, это не обязывает потомков реализовывать свой метод, т.е. возможна ситуация, когда это метод не будет реализован и будет возвращать то, что прописано у абстрактного класса. Но это не критично.
Это зависит исключительно от вас — как у вас идет работа с этими классами.
Что касается меня, то я не припомню необходимости выписывать статические методы с неким внутренним описанием (например, для наших т.н. атомов тарификации) — вполне устраивают и нестатические.
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741485
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamir Valery ShiskinВ абстрактном классе можете объявить сколько угодно статических методов и полей.Но не статических. Отдых в деревне расслабляет. Я хотел сказать "но не абстрактных"
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741526
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exppпачиму б вместо абстрактного статического метода не использовать абстрактный. оверхед от создания экземпляра не должен быть большим
Как это выглядит у меня - есть пакет (в отдельном jar), который содержит много-много классов "команд". Если пользователь хочет узнать какие команды есть в системе и как ими пользоваться, он инициирует запрос, "help", который перебирает все классы и дергает вышеозначенный метод. Формирует из этого ответ пользователю и вываливает его. Мне показалось слишком грубым - для этого создавать по экземпляру класса.
Поскольку это моя домашняя система, и пишу ее я один, то мне вполне подходит то решение, которое я выбрал. А спрашивал я для того, чтобы узнать, как это делается. Всегда хочется сделать изящно и правильно.
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741557
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Если кто помнит времена ФИДО, то там можно было послать роботу своего нода запрос help, который вываливал команды робота, с помощью которых уже можно было подписываться и отписываться от эх и т.п.
Здесь нечто похожее - тоже мейл-робот, но для других целей.
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741883
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут конечно много вариантов есть ...

как jar перебирается?

думаю ничего страшного в создании экземпляров нет. Они так сразу пулиться могут

как вариант вынести эту мета информацию в отдельный класс-фабрику, файло. а может просто определить соглашение про константу в классе команды и дёргать её рефлексией
...
Рейтинг: 0 / 0
Статический метод в прародителе.
    #34741906
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ты перебираешь все классы?
отлично - дергай getDescription через reflection.
еще можно подумать над аннотированием метода execute.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Статический метод в прародителе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]