Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengalih Keluar Pengisytiharan Rakan Tanpa Mengkompromi Reka Bentuk?

Bagaimana untuk Mengalih Keluar Pengisytiharan Rakan Tanpa Mengkompromi Reka Bentuk?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 13:20:30935semak imbas

How to Remove a Friend Declaration Without Compromising Design?

Cara Mengeluarkan Perisytiharan Rakan Semasa Memelihara Reka Bentuk

Penggunaan kata kunci "rakan" dalam reka bentuk berorientasikan objek boleh mewujudkan kebergantungan yang ketat dan menghalang kebolehselenggaraan. Artikel ini menyediakan pendekatan menyeluruh untuk mengalih keluar pengisytiharan rakan sambil mengekalkan reka bentuk keseluruhan sistem.

Latar Belakang Masalah:

Pertimbangkan senario di mana dua kelas, ClassA dan ClassAAccessor, mempunyai hubungan rakan. ClassA mewakili sumber yang dikongsi dengan kaedah yang dilindungi, manakala ClassAAccessor berfungsi sebagai pembantu untuk mengurus akses kepada sumber ini. Hubungan rakan antara ClassA dan ClassAAccessor membolehkan ClassAAccessor mengakses secara langsung kaedah yang dilindungi ClassA.

Kekangan Reka Bentuk:

Untuk memastikan pemfaktoran semula yang betul, beberapa kekangan ditetapkan:

  • Antara muka awam ClassAAccessor hendaklah kekal tidak berubah.
  • Operasi dalaman ClassA hendaklah kekal peribadi.
  • Prestasi dan penggunaan memori tidak boleh terjejas dengan ketara.

Langkah Pemfaktoran Semula:

Langkah 1: Memperkenalkan Antara Muka Abstrak

Ekstrak operasi yang sebelum ini boleh diakses melalui rakan perhubungan ke dalam antara muka berasingan yang dipanggil Antaramuka Dalaman. Faktorkan semula hubungan antara ClassA dan ClassAAccessor untuk menjadikannya bergantung pada antara muka ini dan bukannya menggunakan kata kunci rakan.

Langkah 2: Alihkan Operasi ke Antara Muka

Alihkan operasi dari KelasA kepada Antaramuka Dalaman. Ini menghapuskan kebergantungan "panggilan" daripada ClassAAccessor terus ke ClassA.

Langkah 3: Gam Pelaksanaan Bersama

Buat pembolehubah ahli persendirian dalam ClassAAccessor yang menunjukkan contoh Antaramuka Dalaman. Memperkenalkan kaedah dalam ClassA yang membenarkan menetapkan pembolehubah ahli ini untuk membolehkan ClassAAccessor mengakses operasi dalaman yang diperlukan.

Contoh Pelaksanaan:

<code class="cpp">class ClassAAccessor {
public:
    ClassAAccessor(ClassA&amp; classA);
    void setInternalInterfaceRef(InternalInterface &amp; newValue) {
        internalInterfaceRef = &amp;newValue;
    }
private:  
    InternalInterface* internalInterfaceRef;
};

class ClassA : protected InternalInterface {
public:
    attachAccessor(ClassAAccessor &amp; accessor);
};</code>

Kelebihan Pemfaktoran semula:

  • Menghapuskan pergantungan yang ketat antara ClassA dan ClassAAccessor.
  • Memastikan akses peribadi kepada operasi dalaman ClassA.
  • Menyediakan reka bentuk yang lebih modular dan boleh diselenggara .

Kelemahan Pemfaktoran Semula:

  • Peningkatan kerumitan dalam struktur kod.
  • Potensi penggunaan memori meningkat sedikit disebabkan oleh pengenalan antara muka tambahan.
  • Sokongan UML terhad untuk perhubungan generalisasi yang dilindungi.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Pengisytiharan Rakan Tanpa Mengkompromi Reka Bentuk?. 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