Corak reka bentuk (Corak reka bentuk) ialah satu set ringkasan terperingkat dan dikatalogkan bagi pengalaman reka bentuk kod yang digunakan berulang kali, diketahui kebanyakan orang. Tujuan menggunakan corak reka bentuk adalah untuk menggunakan semula kod, menjadikan kod lebih mudah difahami oleh orang lain, dan memastikan kebolehpercayaan kod. Tidak syak lagi bahawa corak reka bentuk adalah menang-menang untuk diri kita sendiri, orang lain, dan corak reka bentuk menjadikan penulisan kod benar-benar kejuruteraan adalah asas kejuruteraan perisian, sama seperti struktur bangunan;
Corak reka bentuk (corak reka bentuk bahasa Inggeris) adalah penyelesaian kepada masalah berulang dalam reka bentuk berorientasikan objek. Istilah ini telah diperkenalkan ke dalam sains komputer dari bidang reka bentuk seni bina pada tahun 1990-an oleh Erich Gamma dan lain-lain. Maksud istilah ini adalah kontroversi. Algoritma bukan corak reka bentuk kerana algoritma menangani penyelesaian masalah dan bukannya masalah reka bentuk. Corak reka bentuk biasanya menerangkan satu set kelas dan objek yang berinteraksi rapat antara satu sama lain. Corak reka bentuk menyediakan bahasa yang sama untuk membincangkan reka bentuk perisian supaya pengalaman reka bentuk pereka mahir dapat difahami oleh orang baru dan pereka lain. Corak reka bentuk juga menyediakan matlamat untuk pemfaktoran semula perisian.
Dengan minat yang semakin meningkat dalam corak reka bentuk dalam komuniti pembangunan perisian, beberapa monograf berkaitan telah diterbitkan, seminar yang sepadan telah diadakan secara berkala, dan Ward Cunningham mencipta WikiWiki untuk bertukar pengalaman dalam corak reka bentuk.
Tips: Tutorial ini akan menerangkan konsep corak reka bentuk kepada anda langkah demi langkah melalui contoh Java. Jadi anda perlu tahu sesuatu tentang ilmu Jawa.
Format ungkapan
Format untuk menyatakan corak reka bentuk perisian bergantung pada pengarang, dan pembahagian serta nama akan berbeza. Format corak penerangan GoF yang biasa digunakan dibahagikan secara kasar kepada bahagian berikut:
Nama corak: Setiap corak mempunyai nama tersendiri dan nama corak membolehkan kami membincangkan reka bentuk kami.
Masalah: Terdapat kejadian tertentu yang berulang semasa reka bentuk sistem berorientasikan objek dan ia membawa kita untuk mengamalkan corak tertentu.
Penyelesaian: Penyelesaian kepada masalah di atas, kandungannya memberikan pelbagai komponen reka bentuk, hubungan mereka, pembahagian tanggungjawab dan kaedah kolaborasi.
Alias: Corak boleh mempunyai lebih daripada satu nama. Nama-nama ini perlu dicatat dalam bahagian ini.
Motivasi: Dalam kes mana mod ini digunakan adalah tanggungjawab penyelesaian yang disediakan dalam bahagian ini (termasuk masalah dan selok-belok).
Kebolehgunaan: Apakah situasi corak berkenaan, latar belakang corak, dsb.
Struktur: Bahagian rajah kelas dan rajah interaksi yang biasa digunakan ini menggambarkan corak ini.
Peserta: Bahagian ini menyediakan senarai kelas dan objek yang digunakan dalam corak ini dan peranan yang mereka mainkan dalam reka bentuk.
Kerjasama: Menghuraikan interaksi antara kelas dan objek dalam mod ini.
Impak: Kesan penggunaan model ini pada bahagian lain sistem perisian, seperti kesan ke atas kebolehskalaan dan kemudahalihan sistem. Kesan juga merangkumi kesan negatif. Bahagian ini harus menerangkan keputusan, kesan sampingan dan pertukaran penggunaan corak ini: Bahagian ini harus menerangkan pelaksanaan corak, penyelesaian separa untuk corak, teknologi yang mungkin untuk melaksanakan corak atau kaedah corak yang dicadangkan .
Contoh: Terangkan secara ringkas cara menggunakan corak dalam bahasa pengaturcaraan.
Aplikasi Diketahui: Contoh pelaksanaan yang diketahui dalam industri.
Corak Berkaitan: Bahagian ini termasuk corak lain yang berkaitan, serta perbezaan daripada corak lain yang serupa.
Petua: Tutorial Corak Reka Bentuk kami akan membantu anda mempelajari semua tentang corak reka bentuk. Jika anda mempunyai sebarang soalan, sila pergi ke Komuniti Cina PHP untuk bertanya soalan anda, dan netizen yang bersemangat akan menjawabnya untuk anda.
Prinsip corak
Semua orang mula memberi perhatian kepada corak reka bentuk. Jadi, mengapa kita menggunakan corak reka bentuk? Mengapa kita perlu mereka bentuk dengan begitu banyak corak reka bentuk?
Sejujurnya, saya tidak begitu memahaminya sebelum ini. Hanya melihat semua orang mengulangi "Corak reka bentuk" membuatkan saya berasa sedikit lemah. Jadi saya membeli buku mengenai corak reka bentuk "Gang of Four", dan ternyata saya tidak memahaminya sama sekali: Saya seolah-olah memahaminya apabila saya membacanya, tetapi kemudian saya melupakannya selepas beberapa ketika . Mungkin kerana saya agak "bodoh" :)) Baru-baru ini, saya mempunyai beberapa pandangan. "Lebih baik bergembira bersendirian daripada bergembira bersama", saya ingin berkongsi dengan anda, dan saya harap anda boleh memberi saya nasihat
Mengapa kita perlu menganjurkan "Corak Reka Bentuk"? Sebab asas adalah untuk menggunakan semula kod dan meningkatkan kebolehselenggaraan.
Jadi bagaimana kita boleh mencapai penggunaan semula kod? Dunia OO mempunyai beberapa prinsip daripada pendahulunya: prinsip "Pengetua Tertutup Terbuka", prinsip penggantian Liskov, dan prinsip sintesis dan penggunaan semula. Corak reka bentuk melaksanakan prinsip ini untuk mencapai penggunaan semula kod dan meningkatkan kebolehselenggaraan.
Prinsip Terbuka-Tertutup
Prinsip ini dicadangkan oleh "Bertrand Meyer". Teks asal ialah: "Entiti perisian harus dibuka untuk sambungan, tetapi ditutup untuk pengubahsuaian". Maksudnya, modul harus terbuka untuk sambungan tetapi ditutup untuk pengubahsuaian. Modul harus cuba dikembangkan tanpa mengubah suai kod asal ("asal", merujuk kepada kod asal). Jadi bagaimana untuk mengembangkan? Mari lihat "corak kilang": Katakan ada seorang lelaki di Zhongguancun yang menjual cakera cetak rompak dan filem lucah Kami mereka bentuk "perisian pengurusan jualan CD" untuknya. Mula-mula kita harus mereka bentuk antara muka "CD". Seperti yang ditunjukkan dalam gambar: [pra]___________|<>||CD ||_____________||+Jual() || ||_____________|[/pre] Dan cakera cetak rompak dan filem lucah adalah subkategorinya. Budak itu menguruskan cakera ini melalui "DiscFactory". Kodnya ialah:
publicclassDiscFactory{ publicstatic光盘 getDisc(Stringname){ return(光盘)Class.forName(name).getInstance(); } }
Ada yang nak beli cakera cetak rompak, macam mana nak buat?
budak kelas awam { public static void main(String【】 args){ CD d=DiscFactory.getDisc("Pirate Disc"); Mula menjual perisian tulen. Tidak mengapa, kita hanya perlu mencipta satu lagi subkategori "CD" yang dipanggil "perisian tulen". Tidak perlu mengubah suai struktur dan kod asal. Bagaimana pula? Buka untuk sambungan, ditutup untuk pengubahsuaian. "Prinsip Terbuka-Tutup" Corak kilang mengembangkan produk tertentu Sesetengah projek mungkin memerlukan lebih berskala Jika anda ingin mengembangkan "kilang" ini, ia menjadi "corak kilang abstrak".
- Prinsip Penggantian Lebih Kaya
Prinsip penggantian Liskov telah dicadangkan oleh "Barbara Liskov". Jika kelas induk dipanggil, ia boleh dijalankan jika ia ditukar kepada subkelas. Contohnya: CD d=new pirated disk(); d. Jika anda ingin menukar kategori "pirated disk" kepada kategori "lucah", tiada masalah, ia boleh dijalankan sepenuhnya. Pengkompil Java menyemak sama ada program mematuhi prinsip penggantian Liskov. Adakah anda masih ingat prinsip warisan Java? Hak akses kaedah override subkelas tidak boleh kurang daripada hak akses kaedah sepadan kelas induk. Sebagai contoh, kebenaran akses kaedah "Jual" dalam "CD" adalah "awam", maka kaedah "Jual" dalam "Cakera Pirate" dan "Filem Mentah" tidak boleh dilindungi atau peribadi, dan kompilasi tidak akan lulus. Kenapa mesti begini? Fikirkanlah: jika kaedah "menjual" "cakera cetak rompak" adalah peribadi. Kemudian kod berikut tidak boleh dilaksanakan: CD d=new pirated disk();
Prinsip gubahan dan guna semula
bermaksud menggunakan kurang warisan dan lebih banyak hubungan gubahan. Saya pernah menulis program seperti ini: terdapat beberapa kelas yang perlu berurusan dengan pangkalan data, jadi saya menulis kelas untuk operasi pangkalan data, dan kemudian kelas lain yang berurusan dengan pangkalan data mewarisi ini. Akibatnya, kemudian, saya mengubah suai kaedah kelas operasi pangkalan data, dan semua kelas perlu diubah suai. "Satu langkah menjejaskan seluruh badan" Berorientasikan objek adalah untuk menghadkan turun naik kepada julat terkecil yang mungkin.
Di Java, anda harus cuba memprogramkan untuk Antara Muka dan bukannya kelas pelaksanaan. Dengan cara ini, menukar subkelas tidak akan menjejaskan kod yang memanggil kaedahnya. Biarkan setiap kategori mempunyai sedikit hubungan dengan orang lain yang mungkin, "Jangan bercakap dengan orang yang tidak dikenali." Dengan cara ini, jika pintu gerbang bandar terbakar, ia tidak akan membahayakan ikan di dalam kolam. Hanya apabila kebolehskalaan dan kebolehselenggaraan boleh dipertingkatkan
Selepas memahami prinsip ini, dan kemudian melihat corak reka bentuk, ia hanya mengenai cara melaksanakan prinsip ini pada isu tertentu. Zhang Wuji belajar Tai Chi, melupakan semua gerakannya, dan mengalahkan "Dua Orang Tua Xuan Mi" Dikatakan bahawa dia "tidak ada pergerakan dalam fikirannya". Corak reka bentuk boleh digambarkan sebagai helah Jika anda mula-mula mempelajari semua corak, kemudian melupakan semua corak dan melakukan apa sahaja yang anda mahu, ia boleh dipanggil keadaan tertinggi OO. Haha, kelakar, kelakar! (JR)
Abstraksi Prinsip Penyongsangan Kebergantungan tidak harus bergantung pada butiran perlu diprogramkan mengikut
Prinsip Penyongsangan Ketergantungan
untuk antara muka, bukan pengaturcaraan pelaksanaan. Apabila lulus parameter, atau dalam perhubungan pengagregatan gabungan, cuba rujuk kelas peringkat lebih tinggi. Sebab utama ialah pelbagai objek konkrit boleh dicipta secara dinamik apabila membina objek Sudah tentu, jika beberapa kelas konkrit secara relatifnya, tidak perlu membuat kelas abstrak sebagai kelas induknya. Prinsip pengasingan antara muka disesuaikan perkhidmatan. Contoh, setiap
Prinsip Pengasingan Antara Muka
Sejenis peranan, tidak lebih, tidak kurang, jangan lakukan apa yang anda tidak patut lakukan, lakukan apa yang patut anda lakukan, kelas abstrak, kelas abstrak tidak akan mempunyai contoh
-
Kelas abstrak
Kelas diwarisi oleh subkelas dan secara amnya mengandungi atribut dan kaedah biasa sistem ini. Nota: Dalam hubungan pewarisan yang baik, hanya nod daun harus menjadi kelas konkrit, dan nod lain harus menjadi kelas abstrak, yang bermaksud bahawa kelas konkrit tidak diwarisi. Letakkan sebanyak mungkin kod biasa ke dalam kelas abstrak. 7 Hukum Prinsip Pengetahuan Minimum Demeter. Jangan bercakap dengan orang yang tidak dikenali.
Kandungan yang diliputi dalam manual tutorial corak reka bentuk ini
Tutorial corak reka bentuk ini merangkumi pengenalan semua corak reka bentuk, termasuk Corak Kilang, Corak Kilang Abstrak, Corak Singleton dan Corak Pembina (Corak Pembina), Corak Prototaip (Corak Prototaip), dan lain-lain.
Petua:Setiap bab tutorial ini mengandungi banyak contoh Java, yang akan membantu anda mempelajari dan memahami corak reka bentuk dengan lebih baik.
Bab terbaru
Kursus berkaitan
- Pengumpulan pengetahuan rangkaian komputer 2022-09-30
- Tutorial Video Protokol HTTP Pendidikan Boolean 2022-04-14
- Tutorial Video Ekspresi Biasa Pendidikan Boolean 2022-04-18
- Tutorial Video Corak Reka Bentuk Pendidikan Boolean 2022-04-21
- Gambaran keseluruhan rangkaian komputer—pengetahuan asas yang mesti dikuasai oleh pengaturcara 2021-11-22
- Tutorial yang mesti ada untuk pengaturcara—penjelasan terperinci tentang protokol HTTP 2021-11-19
- Pengenalan komprehensif selama satu jam kepada protokol HTTP—penting untuk pembangunan web 2021-11-26
- Kuasai asas Web dalam masa 90 minit (protokol rangkaian | HTTP | Pelayan web) 2021-12-10