Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Подскажите по ООП и абстрактные классы  [new]
bobo96
Member

Откуда:
Сообщений: 122
Всем привет.

Есть такой вот класс-родитель:
public abstract class Root {

  protected abstract void method();

}


и 100500 классов, которые его наследуют:
public class SubRoot
  extends Root {

  private SubRoot() {}

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

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


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

Idea предлагает такой вот вариант:
public abstract class Root {

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

      }
    };
  }

  protected abstract void method();

}


Но как тогда в дочерних классах реализовывать метод method() ?
Спасибо!
8 июн 21, 12:10    [22332776]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Нет, статический метод принадлежит классу в котором он объявлен. Разве что в create() что-то передавать и через Reflection создавать объекты. Но не думаю что это будет лучше.
8 июн 21, 13:10    [22332819]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
bobo96,

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

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

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

Т.е. нужно написать свой простенький DI-фреймворк. :-)
8 июн 21, 13:22    [22332833]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
bobo96
Member

Откуда:
Сообщений: 122
mad_nazgul
bobo96,

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

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

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

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

Половину слов не понял, но все равно спасибо за ответ)
8 июн 21, 13:33    [22332838]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
bobo96,
А зачем ты пишешь new в самом классе а не в коде Для него?
Ты смешал 2 вопроса о разном
- абстрактный класс и
- методы создания экземпляра
8 июн 21, 13:34    [22332841]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
bobo96,

>что бы не описывать его в каждом класс
= выкинуть его вообще.
8 июн 21, 13:38    [22332847]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
bobo96
Member

Откуда:
Сообщений: 122
mad_nazgul
bobo96,
А так для создания классов имеет смысл создать фабрику, которая в "зависимости от" создает потомка от класса Root.

Беглый поиск по интернетам результата не дал, если не затруднит, подскажи, по каким словам гуглить.
8 июн 21, 13:41    [22332850]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
bobo96,
Смотря что вы ищете.
Поиск по "паттерн Фабрика классов".
Создаст заранее неизвестный класс.
Что вам действительно надо неизвестно.
8 июн 21, 13:45    [22332856]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
bobo96
Member

Откуда:
Сообщений: 122
PetroNotC Sharp
bobo96,
Смотря что вы ищете.
Поиск по "паттерн Фабрика классов".
Создаст заранее неизвестный класс.
Что вам действительно надо неизвестно.

Понял, благодарю!
8 июн 21, 13:51    [22332863]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
gmugar
Member

Откуда:
Сообщений: 23
в зачем вам этот getInstance() метод?

Root r = new SubRoot();

VS
Root r = SubRoot.getInstance();


чтобы сделать сложнее? :) чтобы было больше кода? :)
8 июн 21, 14:44    [22332906]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
bobo96
mad_nazgul
bobo96,
А так для создания классов имеет смысл создать фабрику, которая в "зависимости от" создает потомка от класса Root.

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


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

<:o)
8 июн 21, 16:17    [22332976]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
bobo96,

Докладик для общего развития, во что ввязались. :-)
8 июн 21, 16:21    [22332981]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по ООП и абстрактные классы  [new]
bobo96
Member

Откуда:
Сообщений: 122
Всем спасибо, лучшие!)

Сообщение было отредактировано: 8 июн 21, 17:02
8 июн 21, 17:10    [22333004]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить