Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскажите по ООП и абстрактные классы / 13 сообщений из 13, страница 1 из 1
08.06.2021, 12:10
    #40076332
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
Всем привет.

Есть такой вот класс-родитель:
Код: java
1.
2.
3.
4.
5.
public abstract class Root {

  protected abstract void method();

}



и 100500 классов, которые его наследуют:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class SubRoot
  extends Root {

  private SubRoot() {}

  public static SubRoot getInstance() {
    return new SubRoot();
  }

  @Override
  protected void method() {
    // TODO ...
  }
}



Вопрос : могу ли я каким-либо образом оформить метод getInstance() в родительском классе, что бы не описывать его в каждом классе, который наследует родителя ?

Idea предлагает такой вот вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public abstract class Root {

  public Root getInstance() {
    return new Root() {
      @Override
      protected void method() {

      }
    };
  }

  protected abstract void method();

}



Но как тогда в дочерних классах реализовывать метод method() ?
Спасибо!
...
Рейтинг: 0 / 0
08.06.2021, 13:10
    #40076361
Подскажите по ООП и абстрактные классы
Нет, статический метод принадлежит классу в котором он объявлен. Разве что в create() что-то передавать и через Reflection создавать объекты. Но не думаю что это будет лучше.
...
Рейтинг: 0 / 0
08.06.2021, 13:22
    #40076369
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
bobo96,

Ну singleton сейчас уже не модно.
Сейчас для этого используют какой-нибудь DI-фреймворк.
Метод method описывают в каком-нибудь интерфейсе.

А так для создания классов имеет смысл создать фабрику, которая в "зависимости от" создает потомка от класса Root.

Вторым шагом нужно думать, как возвращать только один экземпляр нужного класса.

Т.е. нужно написать свой простенький DI-фреймворк. :-)
...
Рейтинг: 0 / 0
08.06.2021, 13:33
    #40076372
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
mad_nazgul
bobo96,

Ну singleton сейчас уже не модно.
Сейчас для этого используют какой-нибудь DI-фреймворк.
Метод method описывают в каком-нибудь интерфейсе.

А так для создания классов имеет смысл создать фабрику, которая в "зависимости от" создает потомка от класса Root.

Вторым шагом нужно думать, как возвращать только один экземпляр нужного класса.

Т.е. нужно написать свой простенький DI-фреймворк. :-)

Половину слов не понял, но все равно спасибо за ответ)
...
Рейтинг: 0 / 0
08.06.2021, 13:34
    #40076374
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
bobo96,
А зачем ты пишешь new в самом классе а не в коде Для него?
Ты смешал 2 вопроса о разном
- абстрактный класс и
- методы создания экземпляра
...
Рейтинг: 0 / 0
08.06.2021, 13:38
    #40076378
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
bobo96,

>что бы не описывать его в каждом класс
= выкинуть его вообще.
...
Рейтинг: 0 / 0
08.06.2021, 13:41
    #40076380
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
mad_nazgul
bobo96,
А так для создания классов имеет смысл создать фабрику, которая в "зависимости от" создает потомка от класса Root.

Беглый поиск по интернетам результата не дал, если не затруднит, подскажи, по каким словам гуглить.
...
Рейтинг: 0 / 0
08.06.2021, 13:45
    #40076384
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
bobo96,
Смотря что вы ищете.
Поиск по "паттерн Фабрика классов".
Создаст заранее неизвестный класс.
Что вам действительно надо неизвестно.
...
Рейтинг: 0 / 0
08.06.2021, 13:51
    #40076389
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
PetroNotC Sharp
bobo96,
Смотря что вы ищете.
Поиск по "паттерн Фабрика классов".
Создаст заранее неизвестный класс.
Что вам действительно надо неизвестно.

Понял, благодарю!
...
Рейтинг: 0 / 0
08.06.2021, 14:44
    #40076412
gmugar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
в зачем вам этот getInstance() метод?

Код: java
1.
Root r = new SubRoot();


VS
Код: java
1.
Root r = SubRoot.getInstance();



чтобы сделать сложнее? :) чтобы было больше кода? :)
...
Рейтинг: 0 / 0
08.06.2021, 16:17
    #40076454
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
bobo96
mad_nazgul
bobo96,
А так для создания классов имеет смысл создать фабрику, которая в "зависимости от" создает потомка от класса Root.

Беглый поиск по интернетам результата не дал, если не затруднит, подскажи, по каким словам гуглить.


Банда четырёх

<:o)
...
Рейтинг: 0 / 0
08.06.2021, 16:21
    #40076459
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
bobo96,

https://youtu.be/rd6wxPzXQvo
...
Рейтинг: 0 / 0
08.06.2021, 17:10
    #40076466
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по ООП и абстрактные классы
Всем спасибо, лучшие!)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскажите по ООП и абстрактные классы / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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