Sérialisation d'objets en C à l'aide du modèle d'usine
En C, la sérialisation implique la conversion de l'état d'un objet en un flux pour le stockage ou la transmission et plus tard reconstruire l'objet à partir du flux. Une approche courante consiste à utiliser des ID de classe pour la sérialisation et la désérialisation, mais cela peut être considéré comme un anti-modèle.
Boost Serialization
Une alternative consiste à utiliser une bibliothèque comme Boost Serialization . Cette bibliothèque fournit un cadre complet pour la sérialisation d'objets, gérant les détails de bas niveau et offrant une interface conviviale.
Modèle d'usine avec classes enregistrées
Une autre approche est pour utiliser le modèle d'usine avec les classes enregistrées. Voici comment cela fonctionne :
Exemple de code
Le code C suivant démontre une implémentation de la fabrique d'objets :
<code class="cpp">template<typename K, typename T> class Factory { typedef T *(*CreateObjectFunc)(); std::map<K, CreateObjectFunc> mObjectCreator; template<typename S> static T* createObject(){ return new S(); } public: template<typename S> void registerClass(K id){ mObjectCreator.insert( std::make_pair<K,CreateObjectFunc>(id, &createObject<S> ) ); } bool hasClass(K id){ return mObjectCreator.find(id) != mObjectCreator.end(); } T* createObject(K id){ return ((*mObjectCreator[id])(); } };</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!