В BlackBerry нет ничего особенного в использовании синглетонов.Конечно, истинные константы должны быть просто статическими.И все они должны быть окончательными, кроме Strings: есть штраф за использование памяти, если static final String
часто используется в вашем коде.
Синглтон дает вам возможность заменять или удалять сложные модели с относительно длительным сроком службы через единую точку управления.В вашем примере DataModel является хорошим кандидатом.BlackBerry - это персональное устройство, поэтому существует большая вероятность, что эта DataModel с профилем пользователя и, возможно, с дополнительными данными сохранится в течение всего срока службы активного приложения.Итак,
class UserDataModel
{
private static UserDataModel singleton;
public static void login() {
//get credentials
//authenticate
singleton = new UserDataModel(... user profile data...);
}
public static UserDataModel getInstance() { return singleton; }
private String username;
private String password;
private String fullName;
private String age;
...
/* Getters and Setters */
}
Этот способ является правильным, немного упрощенным примером.Если что-то меняется (скажем, хост сервера), все, что вам нужно сделать, это заменить синглтон.Кроме того, это открывает возможность использовать полиморфизм, если реализация UserDataModel различна для разных серверов и т. Д. Это дает много преимуществ за счет одной дополнительной переменной в цепочке методов доступа.Опять же, здесь нет ничего особенного в BlackBerry, это обоснование справедливо для любого Java-приложения.
Почему пример упрощен, потому что вам нужно подумать о потоках.Если есть хоть какой-то отдаленный шанс, что что-то где-то получит доступ к getInstance () в другом потоке, чем login (), вы должны правильно синхронизировать их (даже если мне никогда не удавалось разорвать простую ссылку на объект, открыв / обновив его из разныхтемы на BlackBerry).