ファクトリ パターンを使用した C でのオブジェクトのシリアル化
C では、シリアル化には、オブジェクトの状態をストレージまたは送信以降のストリームに変換することが含まれます。ストリームからオブジェクトを再構築します。一般的なアプローチは、シリアル化と逆シリアル化にクラス ID を使用することですが、これはアンチパターンであると考えられます。
Boost Serialization
1 つの代替方法は、Boost Serialization のようなライブラリを使用することです。 。このライブラリは、オブジェクトのシリアル化のための包括的なフレームワークを提供し、低レベルの詳細を処理し、ユーザーフレンドリーなインターフェイスを提供します。
登録クラスを使用したファクトリ パターン
別のアプローチは次のとおりです。登録されたクラスでファクトリ パターンを使用します。その仕組みは次のとおりです。
コード例
次の C コードは、次の C コードの実装を示しています。オブジェクトファクトリー:
<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>
以上がC でのオブジェクトのシリアル化にファクトリ パターンをどのように利用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。