Artikel ini ditujukan kepada sesiapa sahaja yang, buat kali pertama, menghadapi konsep corak reka bentuk, pernah mendengar istilah singleton , atau entah bagaimana melaksanakan corak singleton tetapi tidak memahami apa yang berlaku. Selamat datang! Pelajar CodeGym menemui corak reka bentuk buat kali pertama pada Tahap 15, apabila kapten secara tidak dijangka meminta mereka untuk "mengukuhkan" pemahaman mereka dengan melaksanakan corak Java Singleton dengan pelaksanaan yang malas. Pelajar yang mendengar tentang corak singleton buat kali pertama serta-merta mempunyai banyak soalan: apakah di dunia corak reka bentuk? Mengapa kita memerlukannya? Apa itu singleton ? Dan akhirnya, apakah pelaksanaan yang malas? Mari jawab soalan-soalan ini mengikut urutan.
Dan corak singleton hanyalah salah satu daripadanya.
dengan blackjack dan nombordan menghabiskan banyak masa berbuat demikian, atau anda boleh melaksanakan satu yang telah difahami dan diterangkan untuk masa yang lama. Begitu juga dengan corak reka bentuk. Selain itu, dengan corak reka bentuk, kod menjadi lebih standard dan apabila menggunakan corak yang sesuai, anda kurang berkemungkinan melakukan kesilapan, memandangkan perangkap biasa corak telah dikenal pasti dan dihapuskan sejak dahulu lagi. Selain daripada segala-galanya, pengetahuan tentang corak membantu pengaturcara memahami satu sama lain dengan lebih baik. Anda hanya boleh menyebut nama corak sebaliknya cuba memberikan penjelasan panjang lebar kepada rakan pengaturcara anda. Kesimpulannya, corak reka bentuk membantu anda:
Untuk menyimpulkan bahagian ini, kami perhatikan bahawa keseluruhan badan corak reka bentuk boleh dibahagikan kepada tiga kumpulan besar:
Apakah corak reka bentuk di dunia?
Saya percaya sedikit sejarah adalah untuk menjawab soalan ini dengan pemahaman yang terbaik. Terdapat empat pengarang pengaturcaraan terkenal (Erich Gamma, John Vlissides, Ralph Johnson, dan Richard Helm) yang menghasilkan idea yang menarik. Mereka menyedari bahawa pembangunan perisian sering memerlukan mereka menyelesaikan masalah yang lebih kurang sama dan menulis kod berstruktur dengan cara yang sama. Jadi mereka memutuskan untuk menerangkan corak tipikal yang sering perlu digunakan dalam pengaturcaraan berorientasikan objek. Buku mereka diterbitkan pada tahun 1994 di bawah tajuk Design Patterns: Elements of Reusable Object-Oriented Software. Nama buku itu ternyata terlalu panjang dan orang ramai mula memanggilnya dengan mudah sebagai buku oleh Geng Empat. Edisi pertama termasuk 23 corak. Selepas itu, berpuluh-puluh corak lain ditemui.Corak reka bentuk ialah penyelesaian piawai kepada masalah biasa. |
Mengapa kita memerlukan corak reka bentuk?
Anda boleh memprogram tanpa mengetahui corak: lagipun, menjelang Tahap 15, anda telah menulis ratusan program mini di CodeGym tanpa mengetahui bahawa ia wujud. Ini menunjukkan bahawa corak reka bentuk ialah sejenis alat yang penggunaannya membezakan master daripada amatur: Corak reka bentuk menerangkan cara menyelesaikan masalah biasa dengan betul. Ini bermakna mengetahui corak menjimatkan masa anda. Dengan cara itu, mereka serupa dengan algoritma. Sebagai contoh, anda boleh mencipta algoritma pengisihan anda sendiri
|
Akhirnya, corak tunggal
Singleton ialah corak ciptaan . Corak ini memastikan bahawa terdapat hanya satu contoh kelas dan menyediakan pusat akses global untuk objek ini. Daripada huraian, harus jelas bahawa corak ini harus digunakan dalam dua kes:- apabila program anda memerlukan tidak lebih daripada satu objek kelas tertentu harus dicipta. Sebagai contoh, permainan komputer mungkin mempunyai kelas Hero dan hanya satu objek Hero yang menerangkan wira tunggal dalam permainan itu.
- apabila anda perlu menyediakan titik untuk akses global kepada objek. Dengan kata lain, anda perlu menyediakan objek dari mana-mana sahaja dalam program. Malangnya, tidak cukup dengan hanya mencipta pembolehubah global, kerana ia tidak dilindungi tulis: sesiapa sahaja boleh menukar nilai pembolehubah, jadi titik capaian global objek mungkin hilang. Ciri-ciri Singleton ini adalah perlu, sebagai contoh, apabila anda mempunyai objek yang berfungsi dengan pangkalan data, dan anda perlu mengakses pangkalan data dari bahagian program yang berlainan. Singleton akan memastikan tiada sesiapa yang menulis kod yang menggantikan contoh yang dibuat sebelum ini.
-
Cari contoh Singleton dengan permulaan malas.
-
Cipta tiga kelas tunggal — Matahari, Bulan, Bumi — dalam fail berasingan menggunakan prinsip yang sama.
-
LaksanakanPlanetantara muka dalam kelas Matahari , Bulan dan Bumi .
- Dalam blok statik kelas Penyelesaian panggilbacaKeyFromConsoleAndInitPlanetkaedah.
-
MelaksanakanbacaKeyFromConsoleAndInitPlanetfungsi kaedah:
-
5.1. Baca satu parameter Rentetan daripada konsol
-
5.2. Jika parameter adalah sama dengan salah satu daripadaPlanetpemalar antara muka, cipta objekPlanet yang sesuai .
-
-
Anda perlu memberikan kelas medan statik peribadi yang menyimpan satu objek:
public class LazyInitializedSingleton { private static LazyInitializedSingleton instance; // #1 }
-
Jadikan pembina (lalai) peribadi. Ini bermakna ia tidak boleh diakses di luar kelas dan tidak akan dapat mengembalikan objek baharu:
public class LazyInitializedSingleton { private static LazyInitializedSingleton instance; private LazyInitializedSingleton(){} // #2 }
-
Isytihar kaedah penciptaan statik yang akan digunakan untuk mendapatkan singleton:
public class LazyInitializedSingleton { private static LazyInitializedSingleton instance; private LazyInitializedSingleton() {} public static LazyInitializedSingleton getInstance() { // #3 if (instance == null) { // If the object has not yet been created instance = new LazyInitializedSingleton(); // Create a new object } return instance; // Return the previously created object } }
GO TO FULL VERSION