что необходимо для написания статического одноэлементного кода на подклассах объектов приложения - PullRequest
0 голосов
/ 07 февраля 2012

В Android всякий раз, когда нам нужно создать подкласс объекта приложения или расширить его, следующим образом:

public class AndroidApplication extends Application{
....
}

и затем внесите необходимые изменения в файл манифеста. зачем писать эту строку кода?

public class AndroidApplication extends Application{

private static AndroidApplication sInstance;
 public static AndroidApplication getInstance() {
  return sInstance;
}
....
}

Всякий раз, когда вы собираетесь получить доступ к своему объекту Application, вы обращаетесь к нему, используя следующий код:

MyApplication myapp = (MyApplication)getApplicationContext();

Выше всегда будет возвращать один статический объект вашего класса Application. Что нужно для написания метода getinstance? Я читал в нескольких блогах и на веб-сайте разработчиков Android, что вышеизложенное является правильным способом совершить покупку, которую я никогда не понимал, почему?

Объект Application создается в памяти при запуске приложения. После этого вы не можете повторно инициализировать его, то есть вы не можете написать этот код:

MyApplication myapp = new MyApplication();

И даже если бы вы это сделали, метод getInstance не помог бы.

Заранее спасибо.

1 Ответ

0 голосов
/ 07 февраля 2012

Единственный шаблон проектирования (также в более общем контексте, этот шаблон проектирования на самом деле не очень хорошая идея ...) хорошо подходит для объекта приложения в Android:

Вы правы, во всяком случае, этот класс будет один раз создан экземпляром фреймворка.

Но разработчик все же может захотеть создать его, как вы предлагаете, используя новое ключевое слово. И здесь вы, похоже, что-то упускаете, поскольку шаблон синглтон-дизайна включает не только метод getInstance, но и определение частного конструктора, что исключает возможность создания экземпляра класса вне метода экземпляра get.

Итак, да, здесь можно применить шаблон синглтона, и это хорошая идея, просто чтобы подтвердить тот факт, что ни один разработчик не должен создавать экземпляр этого класса, единственный экземпляр будет создан фреймворком Android.

...