definisi:
Kerangka kerja untuk mendefinisikan algoritma dalam operasi, menunda beberapa langkah ke subkelas. Ini memungkinkan subkelas untuk mendefinisikan kembali langkah -langkah spesifik tertentu dari suatu algoritma tanpa mengubah struktur suatu algoritma.
Kedengarannya sangat kelas atas, pemahaman saya:
1. Kelas induk menyatakan beberapa metode abstrak (metode dasar) dan beberapa metode spesifik (metode templat)
2. Metode abstrak adalah langkah dari suatu algoritma (proses) yang diimplementasikan dalam subkelas
3. Metode template adalah kerangka kerja algoritma (proses). Telah disepakati di kelas induk untuk mengimplementasikan panggilan ke metode dasar dan menyelesaikan logika tetap.
4. Struktur suatu algoritma (proses) didefinisikan dalam kelas induk, dan detail implementasi spesifik diimplementasikan dalam subkelas.
Catatan: Untuk mencegah operasi jahat, metode template umum ditambahkan dengan final, dan penulisan ulang dilarang.
Diagram Kelas Umum:
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, int index) {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 [index]; // 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
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 dari Mode Metode Template:
1. Merangkum bagian yang tidak berubah dan memperluas bagian variabel
2. Ekstrak bagian publik dari kode untuk pemeliharaan yang mudah
3. Perilaku dikendalikan oleh kelas induk dan diimplementasikan oleh kelas anak
Skenario yang berlaku untuk mode metode template:
1. Beberapa subclass memiliki metode publik dan logikanya pada dasarnya sama
2. Untuk algoritma yang kompleks, algoritma inti dirancang sebagai metode templat, dan fungsi terperinci diimplementasikan oleh setiap subkelas.
3. Memperbaiki kode
Perpanjangan pola metode template
Meringkaskan:
Kelas induk membuat kerangka kerja. Setelah kelas anak menulis ulang beberapa metode kelas induk, ia menyebut metode yang diwarisi dari kelas induk untuk menghasilkan hasil yang berbeda.