23 Pola Desain, Bab 12: Mode Metode Template Java
Definisi: Menentukan kerangka kerja algoritma dalam suatu operasi, dan menunda beberapa langkah ke subkelas, sehingga subkelas dapat mendefinisikan kembali langkah -langkah spesifik tertentu dalam algoritma tanpa mengubah struktur algoritma.
Jenis: Pola perilaku
Diagram kelas:
Bahkan, metode template adalah pola yang sering digunakan dalam pemrograman. Pertama -tama mari kita lihat contohnya. Suatu hari, Programmer A mendapat tugas: Berikan serangkaian bilangan bulat, urutkan angka -angka dalam array dari kecil ke besar, dan kemudian cetak hasil yang diurutkan. Setelah analisis, tugas ini dapat dibagi secara kasar menjadi dua bagian: penyortiran dan pencetakan. Fungsi pencetakan mudah diimplementasikan, jadi penyortiran agak merepotkan. Tetapi A memiliki cara, pertama -tama selesaikan fungsi pencetakan dan temukan orang lain untuk melakukan fungsi Sort.
abstrak kelas abstrak { / *** urutkan array dari array kecil hingga besar* @param* / sortir abstrak abstrak (int [] array); public void showortresult (int [] array) {this.sort (array); System.out.print ("Sortir Hasil:"); untuk (int i = 0; i <array.length; i ++) {System.out.printf ("%3s", array [i]); }}}Setelah menulis, seorang kolega yang ditemukan yang baru saja lulus dan mulai bekerja dan berkata: Ada tugas, saya sudah menulis logika utama, sehingga Anda dapat menerapkan logika yang tersisa. Jadi saya memberikan kelas AbstractSort ke B dan membiarkan B menulis untuk mengimplementasikannya. B mengambil alih dan melihatnya. Itu terlalu sederhana. Itu dilakukan dalam 10 menit. Kodenya adalah sebagai berikut:
Class Concretesort memperluas abstractSort {@Override Protected void sort (int [] array) {for (int i = 0; i <array.length-1; i ++) {selectsort (array, i); }} private void selectSort (int [] array, index int) {int minValue = 32767; // variabel nilai min min indexmin = 0; // variabel indeks nilai min temp // variabel pementasan untuk (int i = index; i <array.length; i ++) {if (array [i] <minvalue) {// temukan nilai minimum minvalue = array [i]; // penyimpanan indexMin nilai minimum = i; }} Temp = array [indeks]; // Swap Dua Nilai Numerik Array [Indeks] = Array [IndexMin]; array [indexmin] = temp; }}Setelah menulisnya, berikan ke A, dan A Will mengambilnya untuk menjalankannya:
klien kelas publik {public static int [] a = {10, 32, 1, 9, 5, 7, 12, 0, 4, 3}; // preset data array public static void main (string [] args) {abstractsort s = new concretesort (); S.ShowsorTresult (A); }} Hasil Menjalankan:
Hasil Urutkan: 0 1 3 4 5 7 9 10 12 32
Itu berjalan normal. Oke, tugas selesai. Benar, ini adalah pola metode templat. Sebagian besar lulusan yang baru saja memasuki tempat kerja harus memiliki pengalaman yang mirip dengan B. Tugas yang kompleks ditulis oleh orang -orang hebat di perusahaan, dan kemudian menulis metode yang lebih sederhana ke dalam abstraksi dan menyerahkannya kepada kolega lain untuk dikembangkan. Pembagian kerja ini sering digunakan di perusahaan dengan tingkat programmer yang relatif jelas. Misalnya, jika tim proyek memiliki arsitek, insinyur senior, dan insinyur junior, arsitek umumnya menggunakan sejumlah besar antarmuka dan kelas abstrak untuk merangkai logika seluruh sistem, dan pengkodean implementasi diserahkan kepada insinyur senior dan insinyur junior sesuai dengan kesulitan. Bagaimana dengan itu, apakah Anda sudah menggunakan mode metode template?
Struktur pola metode template
Pola metode template terdiri dari kelas abstrak dan kelas implementasi (atau sekelompok) melalui struktur warisan. Metode dalam kelas abstrak dibagi menjadi tiga jenis:
Metode Abstrak: Kelas induk hanya menyatakan tetapi tidak mengimplementasikannya, tetapi mendefinisikan spesifikasi, dan kemudian mengimplementasikannya dengan subkelasnya.
Metode Template: Dinyatakan dan diimplementasikan oleh kelas abstrak. Secara umum, metode templat menyebut metode abstrak untuk menyelesaikan fungsi logis utama, dan metode templat sebagian besar didefinisikan sebagai jenis akhir, menunjukkan bahwa fungsi logis utama tidak dapat ditulis ulang dalam subkelas.
Metode Hook: Dinyatakan dan diimplementasikan oleh kelas abstrak. Namun, subclass dapat diperpanjang, dan subclass dapat mempengaruhi logika metode templat dengan memperluas metode kait.
Tugas kelas abstrak adalah untuk membangun kerangka logis, yang biasanya ditulis oleh personel yang berpengalaman, karena kualitas kelas abstrak secara langsung menentukan apakah program tersebut stabil.
Kelas implementasi digunakan untuk mengimplementasikan detail. Metode template dalam kelas abstrak menyelesaikan logika bisnis dengan mengimplementasikan metode ekstensi kelas. Selama metode ekstensi di kelas implementasi lulus uji unit, fungsi keseluruhan umumnya tidak akan memiliki kesalahan besar di bawah premis bahwa metode template benar.
Keuntungan dan skenario metode templat yang berlaku
Mudah diperluas. Secara umum, metode template dalam kelas abstrak adalah bagian yang tidak mudah untuk berubah secara terbalik, sedangkan metode abstrak adalah bagian yang mudah berubah secara terbalik. Oleh karena itu, dengan menambahkan kelas implementasi, umumnya mudah untuk memperluas fungsi, yang sesuai dengan prinsip pembukaan dan penutupan.
Mudah dipelihara. Untuk mode metode template, justru karena logika utamanya sama dengan metode templat digunakan. Jika metode template tidak digunakan, sangat merepotkan untuk mempertahankan kode yang sama secara berantakan.
Lebih fleksibel. Karena ada metode pengait, implementasi subkelas juga dapat mempengaruhi pengoperasian logika utama di kelas induk. Namun, sementara menjadi fleksibel, karena subclass mempengaruhi kelas induk, melanggar prinsip penggantian Richter juga akan membawa risiko pada program. Ini menempatkan persyaratan yang lebih tinggi pada desain kelas abstrak.
Ketika beberapa subclass memiliki metode yang sama dan metode secara logis sama, Anda dapat mempertimbangkan menggunakan pola metode template. Mode ini juga cocok untuk menggunakan program ketika kerangka utama program adalah sama dan detailnya berbeda.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.