Tiene razón en sus suposiciones, en cierto modo.
Debe ser posible dividir el conjunto de todos los objetos en el programa en grupos
1) Usted tiene la información completa que permite la deconstrucción y la reconstrucción completa del objeto. Las matrices de números o cadenas, las estructuras son buenos ejemplos.
2) Tiene información de construcción. Puede reconstruir el objeto llamando al código externo. Un archivo es un buen ejemplo, pero requiere que su programa tenga una abstracción de archivo que recuerde los parámetros de construcción y estado. Podemos, por ejemplo, guardar la ruta al archivo y la posición en el archivo. Sin embargo, la reconstrucción podría fallar. (Por ejemplo, el archivo fue eliminado o cambiado)
3) No tiene información de construcción, el objeto se recibió de alguna manera al azar.
Aquí, para poder serializar los objetos completamente, tenemos que pasar de 3) a 2) a 1). Los objetos en 3) pueden ser atributos de un objeto de tipo 2) y pueden recuperarse al reconstruir con éxito un objeto de tipo 2).
Un objeto de tipo 2) sin embargo, se debe reconstruir serializando solo la información de construcción, que debe ser de tipo 1), por ejemplo, números y cadenas, datos verdaderos.
Todo este esquema parece costoso, ya que si queremos reconstruir todo el estado del programa, tenemos que trabajar con abstracciones que encapsulan objetos del tipo 2). Y tenemos que saber qué hacemos cuando un objeto no puede ser reconstruido. Además, debemos asegurarnos de no mezclar objetos de estos tipos, de que no mezclemos objetos de tipo 3 o 2 donde esperamos recolectar solo objetos del tipo 1.
¿Qué idioma, marco? –
Solo preguntaba en general ... :-) – Matt