Penemuan Seni Bina Heksagon: untuk kod yang teguh dan berskala

DDD
Lepaskan: 2024-09-13 06:34:12
asal
721 orang telah melayarinya

Dalam pembangunan perisian, kami sering berusaha untuk menyelesaikan masalah kebolehskalaan, kebolehselenggaraan dan kebolehujian kod. Di sinilah Seni Bina Heksagon, juga dipanggil "Pelabuhan dan Penyesuai", dimainkan.

Idea pendekatan yang dibangunkan oleh Alistair Cockburn ini ialah domain perniagaan (nadi aplikasi anda) diasingkan daripada seluruh sistem dan boleh digunakan secara bebas daripada teknologi luaran (rangka kerja, pangkalan data, UI, luaran API ).

Ayuh, mari kita mendalami konsep asas Seni Bina Heksagon dan lihat bersama-sama bagaimana ia boleh mengubah cara anda mereka bentuk kod anda! ?

Apakah sebenarnya Seni Bina Heksagon?

Seni Bina Heksagon ialah cara menstrukturkan aplikasi supaya ia bebas daripada butiran luaran. Ia menekankan pengasingan kebimbangan dengan membahagikan aplikasi kepada beberapa lapisan yang berbeza.

Matlamatnya adalah untuk menjadikan aplikasi bebas daripada teknologi tertentu, dengan mengatur interaksi antara nadi aplikasi (logik perniagaan) dan dunia luar (pangkalan data, antara muka pengguna, API, rangka kerja, dll. ), semua ini melalui Pelabuhan dan Penyesuai.

Konsep asas

Bayangkan aplikasi anda sebagai heksagon dengan domain (logik perniagaan) di tengah. Perniagaan teras ini tidak seharusnya dipautkan terus kepada butiran pelaksanaan (seperti Symfony, Doktrin, API pihak ketiga, dsb.). Untuk mencapai matlamat ini, adalah perlu untuk mencipta antara muka yang dipanggil Ports, dan antara muka ini akan dilaksanakan oleh Penyesuai, yang menjaga komunikasi dengan perkhidmatan luaran.

? Pelabuhan: dengan kata lain, antara muka yang melaluinya dunia luar boleh berinteraksi dengan teras perniagaan. Port ialah titik masuk atau keluar aplikasi (API, permintaan HTTP, arahan CLI, dll.).

? Penyesuai: penyesuai ialah pelaksanaan konkrit antara muka ini. Mereka menterjemah permintaan atau respons luaran kepada tindakan yang boleh difahami oleh logik perniagaan. Ini termasuk interaksi dengan pangkalan data, rangka kerja, API, dsb.

Struktur aplikasi heksagon

Untuk memahami dengan lebih baik, kami akan menggunakan contoh mudah dalam Symfony. Mari bayangkan bahawa aplikasi anda mesti membenarkan pengguna membuat pesanan dan ia mesti berinteraksi dengan pangkalan data untuk menyimpan pesanan ini.

Nah, lihat bagaimana anda boleh menstruktur aplikasi anda mengikut seni bina heksagon. ?

1. Jantung Perniagaan

Ini ialah teras aplikasi anda, bahagian yang mempunyai tiada kebergantungan luaran. Di sinilah letak logik perniagaan, seperti membuat pesanan, mengesahkan datanya, dsb.

Découverte de l

Di sini, kelas Pesanan mewakili model asas pesanan. Anda akan perasan bahawa kelas ini tidak tahu apa-apa tentang cara ia akan disimpan atau dari mana data itu datang.

2. Pelabuhan (Antara Muka)

Port mentakrifkan antara muka yang perlu dilaksanakan oleh penyesuai supaya logik perniagaan boleh berfungsi. Ia boleh menjadi titik masuk ke dalam sistem (seperti permintaan HTTP) atau titik keluar (seperti panggilan ke pangkalan data).

Découverte de l

Antara muka OrderRepositoryInterface akan berfungsi sebagai port output. Ia hanya mentakrifkan kaedah yang logik perniagaan perlu berinteraksi dengan pangkalan data. Domain tidak tahu cara data ini akan disimpan.

3. Penyesuai (Pelaksanaan)

Penyesuai ialah pelaksanaan konkrit Port. Penyesuai akan membolehkan anda menterjemah:

  • semua interaksi luaran terhadap logik perniagaan
  • logik perniagaan ke arah tindakan konkrit (seperti menyimpan dalam pangkalan data).

Découverte de l

Adapt di sini menterjemahkan panggilan ke OrderRepositoryInterface ke dalam interaksi dengan Doctrine (pustaka pengurusan pangkalan data) tetapi logik perniagaan anda tidak tahu bahawa Doctrine digunakan.

4. Contoh pengawal dalam Symfony

Pengawal akan bertindak sebagai titik masuk untuk permohonan kami. Dialah yang berinteraksi dengan pengguna melalui permintaan HTTP, kemudian mewakilkan tugas kepada domain melalui Pelabuhan dan Penyesuai.

Découverte de l

Di sini anda dapat melihat bahawa pengawal hanya mengetahui antara muka OrderRepositoryInterface dan bukan pelaksanaan konkrit. Ini menjadikan kod itu boleh diuji, boleh dikembangkan dan bebas daripada rangka kerja dan teknologi luaran (Symfony, Doktrin, dll.).

Mengapa menggunakan Seni Bina Heksagon?

  1. Dengan memisahkan logik perniagaan anda daripada pelaksanaan luaran (pangkalan data, HTTP, API luaran), anda menjadikan kod anda lebih fleksibel. Menukar pangkalan data atau rangka kerja menjadi lebih mudah dan kurang berisiko.

  2. Memandangkan logik perniagaan tidak terikat dengan unsur luaran, anda boleh dengan mudah mengejek atau menggantikan penyesuai dalam ujian anda.

  3. Dengan pemisahan yang jelas ini, lebih mudah untuk menambah ciri baharu, mengubah suai gelagat atau menggunakan semula komponen tertentu tanpa menjejaskan logik perniagaan.

  4. Anda boleh menggunakan semula perniagaan teras yang sama dengan pelbagai jenis penyesuai. Contohnya, logik perniagaan yang sama boleh digunakan untuk aplikasi web, API REST atau antara muka baris arahan.

Tetapi berhati-hati!

Walaupun seni bina heksagon berkuasa, penstrukturan aplikasi anda dengan cara ini boleh menjadi agak berlebihan, terutamanya untuk projek kecil. Untuk aplikasi kecil, seni bina heksagon boleh menambah kerumitan yang tidak perlu, kerana penyahgandingan tidak semestinya perlu.

Atas ialah kandungan terperinci Penemuan Seni Bina Heksagon: untuk kod yang teguh dan berskala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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!