팩토리 패턴을 사용하는 C의 객체 직렬화
C에서 직렬화에는 객체의 상태를 저장 또는 전송을 위한 스트림으로 변환하는 작업이 포함됩니다. 스트림에서 객체를 재구성합니다. 일반적인 접근 방식은 직렬화 및 역직렬화에 클래스 ID를 사용하는 것이지만 이는 안티패턴으로 간주될 수 있습니다.
Boost Serialization
한 가지 대안은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!