Как передать одноэлементную ссылку на десять родственных объектов - PullRequest
1 голос
/ 22 марта 2011

Если десять классов наследуются от базового класса, и все десять подклассов нуждаются в доступе к одиночному элементу, как должна передаваться ссылка на одноэлементный объект? Я вижу несколько способов сделать это, два таких:

  1. Вызов статического метода в суперклассе, который устанавливает ссылку на статический объект, который затем может быть разделен подклассами

  2. Передать ссылку на синглтон каждому подклассу в качестве аргумента в своих конструкторах. Каждый подкласс может хранить ссылку на одноэлементный объект или передавать его в конструктор суперкласса.

Но я не знаю, какой путь предпочтительнее, или я упускаю что-то очевидное. Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 22 марта 2011

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

2 голосов
/ 22 марта 2011

Вариант 1 обеспечивает меньше шума и дублирования в вашем коде.

1 голос
/ 22 марта 2011

Как насчет создания экземпляра синглтона в базовом классе, например:

static final MySingleton mySingleton = new MySingleton();

mySingleton автоматически становится доступным во всех унаследованных классах.

РЕДАКТИРОВАТЬ: В соответствии с вашим комментарием:

Вы можете получить статическую ссылку в базовом классе (если она не требует передачи аргумента времени выполнения) следующим образом:

static final MySingleton mySingleton;
static {
   SomeClass so = new SomeClass(123, "abc");
   mySingleton = so.getMySingleton();
}
...