Bagaimana untuk Memfaktorkan Semula Perisytiharan Ketergantungan \'Rakan\': Panduan Langkah demi Langkah untuk Mengeluarkan Saling Kebergantungan yang Berlebihan?

DDD
Lepaskan: 2024-11-05 10:02:02
asal
364 orang telah melayarinya

How to Refactor a

Cara Memfaktorkan Semula Perisytiharan Ketergantungan "rakan"

Latar Belakang

Seseorang mungkin menghadapi senario di mana mengalih keluar pergantungan "rakan" antara dua kelas adalah dikehendaki, terutamanya disebabkan kebimbangan tentang saling bergantung yang berlebihan, isu penyelenggaraan dan UML yang sudah lapuk standard.

Langkah 1: Perkenalkan Antara Muka Abstrak

Ekstrak kaedah yang didedahkan oleh kelas "rakan" dan cipta antara muka abstrak baharu. Wujudkan perhubungan pergantungan daripada kelas "rakan" ke antara muka dan pergantungan "panggilan" daripada kelas lain ke antara muka.

Langkah 2: Alihkan Operasi ke Antara Muka

Alihkan operasi yang membentuk pergantungan "panggilan" daripada kelas bergantung kepada antara muka abstrak. Jadikan antara muka memanjangkan pembina yang dilindungi untuk tujuan pewarisan dan sembunyikan persatuan generalisasi yang dilindungi antara kelas bergantung dan antara muka.

Langkah 3: Gam Pelaksanaan Bersama

Dalam langkah terakhir, cipta kaedah dalam kelas "rakan" untuk menghantar rujukan antara muka abstrak kepada kelas bergantung. Panggil kaedah ini daripada kelas bergantung semasa pemulaan untuk mewujudkan sambungan yang diperlukan.

Pelaksanaan

KelasA (penyedia):

<code class="cpp">class ClassA : protected InternalInterface {
    public:
        attachAccessor(ClassAAccessor &accessor) {
            accessor.setInternalInterfaceRef(*this);
        }
};</code>
Salin selepas log masuk

ClassAAccessor (rakan):

<code class="cpp">class ClassAAccessor {
    public:
        ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) {
            classA.attachAccessor(*this);
        }
    private:  
        InternalInterface* internalInterfaceRef;
};</code>
Salin selepas log masuk

Kelebihan

  • Menghapuskan pergantungan yang tidak perlu antara kelas
  • Mematuhi piawaian UML moden
  • Menguatkuasakan akses kawalan dengan menyembunyikan operasi dalaman daripada awam

Batasan

  • Boleh meningkatkan kerumitan kod
  • Memerlukan antara muka abstrak, mempengaruhi prestasi dan jejak memori
  • Perwakilan UML bagi generalisasi yang dilindungi perhubungan boleh mencabar

Atas ialah kandungan terperinci Bagaimana untuk Memfaktorkan Semula Perisytiharan Ketergantungan \'Rakan\': Panduan Langkah demi Langkah untuk Mengeluarkan Saling Kebergantungan yang Berlebihan?. 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
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!