Паттерн: Хранитель (Memento)
Фрагмент: хранитель в виде внутреннего класса [java]
  1. package memento;
  2.  
  3. public class Originator {
  4. /**
  5. * Хранитель, определенный в виде
  6. * внутреннего члена класса Originator-а
  7. */
  8. public class Memento {
  9. /* "Узкий" открытый интерфейс хранителя,
  10. * доступный всем
  11. */
  12. public void CompressMementoState() {
  13. /* ..Оптимизируем размер, занимаемым хранителем.. */
  14. }
  15. public int GetMementoSize() {
  16. int res = 0;
  17. /* ..Вычисляем размер, занимаемый хранителем.. */
  18. return res;
  19. }
  20.  
  21. /* "Широкий" закрытый интерфейс хранителя,
  22. * доступный только хозяину (Originator-у в данном случае)
  23. */
  24. private Memento() {
  25. /* ... */
  26. }
  27.  
  28. private void SetState(State state) {
  29. /* ... */
  30. }
  31.  
  32. private State GetState() {
  33. State res = null;
  34. /* ... */
  35. return res;
  36. }
  37. }
  38.  
  39. /* Методы, интерфейс хозяина
  40. */
  41. public Memento CreateMemento() {
  42. Memento res = null;
  43. /* .. */
  44. return res;
  45. }
  46.  
  47. public void SetMemento(Memento mem) { /* ... */ }
  48. }
  49.  
  50. class State {
  51.  
  52. }
  53.