memperkenalkan
Metode template mendefinisikan kerangka algoritma operasional dan menunda beberapa langkah ke subclass. Metode templat memungkinkan subkelas untuk mendefinisikan kembali langkah -langkah spesifik tertentu dari algoritma tanpa mengubah struktur algoritma.
Metode templat adalah teknik dasar untuk penggunaan kembali kode, yang sangat penting di perpustakaan kelas karena mereka mengekstraksi perilaku publik di perpustakaan kelas. Metode template mengarah ke struktur kontrol terbalik, yang merupakan "hukum Hollywood" yang legendaris, yaitu, "jangan mencari kami, kami akan mencari Anda", yang mengacu pada kelas orang tua yang menyebut pengoperasian kelas, bukan sebaliknya. Manifestasi konkret adalah kelas abstrak (dan metode abstrak di dalamnya) dalam bahasa pemrograman yang berorientasi objek, serta subkelas yang mewarisi kelas abstrak (dan metode abstrak).
teks
Misalnya, membuat teh dan kopi memiliki langkah yang sama, seperti air mendidih, menyeduh, menuangkannya ke dalam cangkir, menambahkan bahan -bahan kecil, dll. Namun, metode pembuatan bir setiap minuman dan bahan -bahan kecil yang ditambahkan berbeda, sehingga kami dapat menggunakan metode templat untuk mencapai langkah utama ini.
Pertama, tentukan langkah -langkah abstrak:
Salinan kode adalah sebagai berikut:
var caffeinebeverage = function () {
};
Caffeinebeverage.prototype.preparerecipe = function () {
this.boilwater ();
this.brew ();
this.pouroncup ();
if (this.customerwantscondiments ()) {
// Jika Anda dapat menambahkan bahan kecil, tambahkan
this.addcondiments ();
}
};
Caffeinebeverage.prototype.boilwater = function () {
Console.log ("Didihkan air!");
};
Caffeinebeverage.prototype.pouroncup = function () {
Console.log ("Masukkan minuman ke dalam cangkir!");
};
Caffeinebeverage.prototype.brew = function () {
Lempar kesalahan baru ("Metode ini harus ditulis ulang!");
};
Caffeinebeverage.prototype.addcondiments = function () {
Lempar kesalahan baru ("Metode ini harus ditulis ulang!");
};
// tambahkan bahan kecil secara default
Caffeinebeverage.prototype.customerwantscondiments = function () {
Kembali Benar;
};
Fungsi ini memperluas semua langkah dasar dan langkah utama pada prototipe. Pembuatan bir dan menambahkan bahan -bahan kecil tidak diimplementasikan, dan digunakan oleh fungsi yang sesuai dengan minuman spesifik untuk diimplementasikan. Selain itu, apakah akan menambahkan bahan -bahan kecil (customerwantscondiments) mengembalikan true secara default. Nilai ini dapat ditulis ulang saat menulis ulang sub-fungsi.
Dua fungsi berikut adalah fungsi yang sesuai untuk membuat kopi dan menyeduh teh:
Salinan kode adalah sebagai berikut:
// Buat kopi
var coffee = function () {
Caffeinebeverage.Apply (ini);
};
Coffee.prototype = caffeinebeverage baru ();
Coffee.prototype.brew = function () {
Console.log ("Saya ingin menuangkan kopi dari pembuat kopi!");
};
Coffee.prototype.addcondiments = function () {
console.log ("Tambahkan gula dan susu");
};
Coffee.prototype.customerwantscondiments = function () {
kembalikan konfirmasi ("Apakah Anda ingin menambahkan gula dan susu?");
};
// Buat daun teh
var tea = function () {
Caffeinebeverage.Apply (ini);
};
Teh.prototype = caffeinebeverage baru ();
Tea.prototype.brew = function () {
Console.log ("puuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
};
Tea.prototype.addcondiments = function () {
console.log ("Tambahkan lemon!");
};
Tea.prototype.customerwantscondiments = function () {
kembalikan konfirmasi ("Apakah Anda ingin menambahkan lemon?");
};
Selain itu, menggunakan konfirmasi memungkinkan pengguna untuk memilih apakah akan menambahkan bahan -bahan kecil sendiri, yang sangat bagus, bukan?
Meringkaskan
Metode template diterapkan pada situasi berikut:
1. Menerapkan bagian yang tidak berubah dari suatu algoritma pada satu waktu dan meninggalkan perilaku yang dapat berubah ke subkelas untuk mengimplementasikannya
2. Perilaku publik di setiap subkelas harus diekstraksi dan terkonsentrasi dalam kelas orang tua publik untuk menghindari duplikasi kode, dan perbedaan dipisahkan menjadi operasi baru. Akhirnya, ganti kode yang berbeda ini dengan metode template untuk phishing operasi baru ini.
3. Kontrol Ekstensi Subkelas. Metode template hanya memanggil operasi "kait" pada titik -titik tertentu, sehingga memungkinkan ekstensi pada titik -titik ini.
Tidak seperti pola kebijakan, metode templat menggunakan pewarisan untuk mengubah bagian dari algoritma, sementara pola kebijakan menggunakan delegasi untuk mengubah seluruh algoritma.