Serialization proxy (посредник сериализации) – это паттерн, который дает простой способ определить собственную сериализационную форму.
1. Внутри целевого класса объявляется
вложенный класс-посредник;
2. В посреднике объявляются поля, описывающие
логическую структуру объекта (собственно, сериализационную форму);
3. Добавляется конструктор посредника, принимающий экземпляр оригинального класса и инициализирующий все эти поля;
4. Оба класса помечаются интерфейсом
Serializable;
5. В методе
writeReplace оригинального класса инстанциируется и возвращается прокси от
this;
6. Симметричные действия совершаются для чтения –
в классе-посреднике реализуется метод
readResolve;
7. В основном классе добавляется
readObject, который выбрасывает исключение – это защитит от чтения без прокси.
Пример кода реализации.