<< | к паттерну | главная | печатать | обсудить(0 сообщений) >>
Паттерн: Наблюдатель (Observer)
Исходник: Users - функционал управления пользователями, сущность - ConcreteSubject [java, code #515, hits: 1776, рейтинг: 3/7,4.99(492)] +
автор: this [добавлен: 06.10.2007] управление:
  1. package observer;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Observable;
  6.  
  7. public class Users extends Observable {
  8. private List<String> loggedIn = new ArrayList<String>();
  9.  
  10. public void login(String userName, String password) {
  11. if (!passwordValid(userName, password)) {
  12. throw new SecurityException("Пользователь с именем " + userName +
  13. " и паролем '" + password + "' - не найден!");
  14. }
  15.  
  16. loggedIn.add(userName);
  17. setChanged();
  18. notifyObservers(userName);
  19. }
  20.  
  21. public void logout(String userName) {
  22. loggedIn.remove(userName);
  23. setChanged();
  24. notifyObservers(userName);
  25. }
  26.  
  27.  
  28. /**
  29. * Проверка правильности имени и пароля.
  30. * Обратите внимание на то, что такого рода методы проверки
  31. * безопасности <b>всегда следует объявлять как final</b> для
  32. * предотвращения их умышленного переопределения с целью взолома
  33. * @param name - имя, логин пользователя
  34. * @param password - пароль пользователя
  35. * @return true/false
  36. */
  37. public final boolean passwordValid(String name, String password) {
  38. boolean res = false;
  39. /* ....
  40. * Проверка существования пользователя
  41. * с логином name и паролем password
  42. * ....
  43. * */
  44. return res;
  45. }
  46.  
  47. public boolean loggedIn(String name) {
  48. return loggedIn.contains(name);
  49. }
  50. }
Сущность ConcreteSubject

Субъект, оповещение в данном случае осуществляется при логине пользователей.

+добавить реализацию
 
каталог | задачи | паттерны | исходники | стат | форумы | карта сайта | контакты | ссылки 
© 2000-2012 CodeLAB Group
  Все права защищены
Страница сгенерирована за 0.016853 секунд
Количество запросов к БД: 11, gzip: 3.8kb/14.0kb(74%)