Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Corak Kilang boleh dimanfaatkan untuk Pensirian Objek dalam C?

Bagaimanakah Corak Kilang boleh dimanfaatkan untuk Pensirian Objek dalam C?

Susan Sarandon
Susan Sarandonasal
2024-11-01 09:11:01979semak imbas

How can the Factory Pattern be leveraged for Object Serialization in C  ?

Siri Objek dalam C Menggunakan Corak Kilang

Dalam C , siri melibatkan penukaran keadaan objek kepada aliran untuk penyimpanan atau penghantaran dan kemudiannya membina semula objek daripada aliran. Pendekatan yang biasa digunakan ialah menggunakan ID kelas untuk penyirian dan penyahsirilan, tetapi ini boleh dianggap sebagai anticorak.

Tingkatkan Sirialisasi

Satu alternatif ialah menggunakan perpustakaan seperti Boost Serialisasi . Pustaka ini menyediakan rangka kerja komprehensif untuk pensirilan objek, mengendalikan butiran peringkat rendah dan menawarkan antara muka yang mesra pengguna.

Corak Kilang dengan Kelas Berdaftar

Pendekatan lain ialah untuk menggunakan corak kilang dengan kelas berdaftar. Begini caranya:

  1. Buat kelas kilang yang menyimpan peta antara kunci (ID kelas) dan penunjuk fungsi yang dipanggil "pencipta."
  2. Daftar kelas dengan kilang dengan memanggil kaedah registerClass() factory, menghantar ID kelas dan fungsi pencipta untuk kelas itu.
  3. Laksanakan fungsi pencipta sebagai fungsi ahli statik yang mencipta tika kelas masing-masing.
  4. Untuk mencipta objek daripada kelas, panggil kaedah createObject() kilang dengan ID kelas yang sepadan.

Contoh Kod

Kod C berikut menunjukkan pelaksanaan kilang objek:

<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, &amp;createObject<S> ) ); 
    }

    bool hasClass(K id){
        return mObjectCreator.find(id) != mObjectCreator.end();
    } 

    T* createObject(K id){
        return ((*mObjectCreator[id])();
    }
};</code>

Atas ialah kandungan terperinci Bagaimanakah Corak Kilang boleh dimanfaatkan untuk Pensirian Objek dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn