Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencapai Pensirilan Kelas yang Cekap dan Elegan dalam C Menggunakan Corak Kilang Objek?
Melaksanakan Pensirilan Strim untuk Kelas
Pendekatan tradisional untuk pensirilan kelas dalam C , menggunakan ID kelas untuk membezakan antara kelas, telah dipersoalkan disebabkan potensi ketidakcekapan dan kekurangan keanggunannya. Artikel ini meneroka kaedah alternatif untuk mengendalikan pensirilan, menawarkan penyelesaian yang memanfaatkan corak kilang objek.
Pustaka Pensiri Boost
Pensiri Boost ialah perpustakaan yang digunakan secara meluas yang memudahkan objek bersiri. Ia menyediakan rangka kerja untuk mengoptimumkan proses bersiri dan penyahsirilan, menghapuskan keperluan untuk penukaran ID kelas manual.
Corak Kilang Objek dengan Kelas Boleh Didaftar
Pendekatan alternatif ialah dengan menggunakan corak kilang objek dengan kelas boleh didaftarkan. Ini melibatkan penggunaan peta untuk mengaitkan ID kelas dengan fungsi penciptaan kilang. Apabila mensiri objek, ID kelas disimpan bersama-sama dengan data. Semasa penyahserikatan, fungsi kilang yang sepadan dengan ID kelas diambil semula dan digunakan untuk membuat instantiate objek yang sesuai.
Pelaksanaan
Kod di bawah menyediakan pelaksanaan asas C bagi suatu kilang objek:
<code class="cpp">template<typename K, typename T> class Factory { private: 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(id, &createObject<S>)); } bool hasClass(K id) { return mObjectCreator.find(id) != mObjectCreator.end(); } T* createObject(K id) { typename std::map<K, CreateObjectFunc>::iterator iter = mObjectCreator.find(id); if (iter == mObjectCreator.end()) { return NULL; } return ((*iter).second)(); } };</code>
Dengan menggunakan corak kilang objek ini, siri kelas boleh dicapai dengan cara yang lebih bersih dan lebih meluas. Penggunaan kelas boleh didaftarkan membolehkan fleksibiliti yang lebih besar dan penyelenggaraan hierarki objek yang lebih mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pensirilan Kelas yang Cekap dan Elegan dalam C Menggunakan Corak Kilang Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!