Adakah Pensirilan ID Kelas dalam C adalah Amalan Lama?

Patricia Arquette
Lepaskan: 2024-10-31 10:14:02
asal
795 orang telah melayarinya

Is Class ID Serialization in C   an Antiquated Practice?

Pelaksanaan Serial dengan ID Kelas untuk C

Serialization ialah teknik penting dalam pembangunan perisian untuk menyimpan keadaan objek dalam format yang boleh mudah dipindahkan dan disimpan. Secara tradisinya, pendekatan biasa dalam C adalah menggunakan ID kelas untuk bersiri. Ini melibatkan penentuan kelas asas dan terbitan serta melaksanakan penyataan suis yang mengarahkan pensirilan dan penyahsirilan ke kelas yang sesuai.

Walau bagaimanapun, penggunaan ID kelas untuk penyirian telah menimbulkan kebimbangan. Sesetengah pembangun berhujah bahawa ia menggalakkan anti-corak dan melanggar prinsip Berorientasikan Objek (OO).

Pendekatan Alternatif

Pensiri Boost menawarkan alternatif kepada ID kelas. Pustaka ini menyediakan rangka kerja yang kukuh dan ditulis dengan baik untuk penyirian objek. Dengan menggunakan Boost Serialization, pembangun boleh mengelakkan kelemahan siri berasaskan ID kelas.

Corak Kilang dengan Kelas Boleh Didaftar

Pendekatan lain ialah menggunakan corak Kilang dengan boleh didaftarkan kelas. Ini melibatkan penciptaan kilang yang memetakan kunci kepada fungsi pencipta templat. Apabila kelas baharu perlu dibuat, penuding kepada fungsi pencipta dimasukkan ke dalam peta.

Berikut ialah pelaksanaan C dipermudahkan bagi kelas Kilang:

<code class="cpp">template<typename K, typename T>
class Factory {
    std::map<K, T *(*CreateObjectFunc)()> mObjectCreator;

public:
    template<typename S>
    void registerClass(K id) {
        mObjectCreator.insert(std::make_pair(id, &createObject<S>));
    }

    T* createObject(K id) {
        typename std::map<K, CreateObjectFunc>::iterator iter = mObjectCreator.find(id);
        if (iter == mObjectCreator.end()) {
            return NULL;
        }
        return ((*iter).second)();
    }
};</code>
Salin selepas log masuk

Pendekatan ini membolehkan pendaftaran kelas baharu pada masa jalan dan memudahkan proses penciptaan objek berdasarkan kekunci.

Walaupun kedua-dua pendekatan bukan standard C, Boost Serialization dan corak Kilang dengan kelas boleh daftar menyediakan alternatif yang berdaya maju kepada ID kelas tradisional -bersiri berasaskan dalam C .

Atas ialah kandungan terperinci Adakah Pensirilan ID Kelas dalam C adalah Amalan Lama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!