Паттерн: Хранитель (Memento)
Фрагмент: хранитель в виде дружеского класса [C++]
  1. package memento;
  2.  
  3. class Originator2 {
  4. public:
  5. Memento* CreateMemento();
  6. void SetMemento(const Memento*);
  7. // ...
  8. private:
  9. State* _state; // внутренние структуры данных
  10. // ...
  11. };
  12. class Memento {
  13. public:
  14. // узкий открытый интерфейс
  15. virtual ~Memento();
  16. private:
  17. // закрытые члены доступны только хозяину Originator
  18. friend class Originator;
  19. Memento();
  20. void SetState(State*);
  21. State* GetState() ;
  22. // ...
  23. private:
  24. State* state;
  25. // ...
  26. };
  27.  
  28. class State {
  29.  
  30. }