Corak Kaedah Templat (Template Method
) mentakrifkan rangka algoritma dalam operasi dan melengahkan beberapa langkah algoritma kepada subkelas supaya subkelas tidak boleh mengubah struktur algoritma algoritma tersebut.
Corak kaedah templat mengandungi peranan utama berikut:
Kelas abstrak (Abstract Class
): Bertanggungjawab memberikan garis besar dan rangka sesuatu algoritma. Ia terdiri daripada kaedah templat dan beberapa kaedah asas.
Kaedah abstrak (Abstract Method
): Kaedah abstrak diisytiharkan oleh kelas abstrak dan dilaksanakan oleh subkelas konkritnya.
Kaedah konkrit (Concrete Method
): Kaedah konkrit diisytiharkan dan dilaksanakan oleh kelas abstrak atau kelas konkrit, dan subkelasnya boleh mengatasi atau mewarisi secara langsung.
Kaedah cangkuk (Hook Method
): telah dilaksanakan dalam kelas abstrak, termasuk kaedah logik untuk penghakiman dan kaedah kosong yang perlu ditulis semula oleh subkelas. Kaedah cangkuk umum ialah kaedah logik yang digunakan untuk penghakiman Nama kaedah ini secara amnya ialahXxx, dan jenis nilai pulangan ialah boolean.
Kaedah templat: mentakrifkan rangka algoritma dan memanggil kaedah asasnya dalam susunan tertentu.
Kaedah asas: Ia adalah kaedah untuk melaksanakan setiap langkah algoritma. Kaedah asas boleh dibahagikan kepada tiga jenis:
Subkelas konkrit (Concrete Class
): melaksanakan kaedah abstrak dan kaedah cangkuk yang ditakrifkan dalam kelas abstrak, ia merupakan tahap Langkah logik.
[Kes]
Langkah-langkah memasak adalah tetap, termasuk menuang minyak, minyak panas, menuang sayur-sayuran, menuang perasa, dan memusing Kacau -goreng dan langkah-langkah lain. Tetapi anda boleh memasukkan sayur-sayuran yang berbeza dan sos yang berbeza. Sekarang gunakan corak kaedah templat untuk mensimulasikan
public class TemplateTest { public static void main(String[] args) { //炒包菜 BaoCai baoCai = new BaoCai(); baoCai.cookProcess(); System.out.println("-------------"); //炒白菜 BaiCai baiCai = new BaiCai(); baiCai.cookProcess(); } } abstract class AbstractClass{ //抽象类 //模板方法定义 public final void cookProcess() { this.pourOil();//倒油 this.heatOil();//热油 this.pourVegetable();//倒蔬菜 this.pourSauce();//倒调味料 this.fry();//翻炒 } public abstract void pourVegetable();//倒蔬菜是不一样的(一个下包菜,一个是下白菜) public abstract void pourSauce();//倒调味料是不一样 public void pourOil() {System.out.println("倒油");} public void heatOil() {System.out.println("热油");} public void fry(){System.out.println("炒啊炒");} } class BaoCai extends AbstractClass{ public void pourVegetable() {System.out.println("加入包菜");} public void pourSauce() {System.out.println("加入辣椒酱");} } class BaiCai extends AbstractClass{ public void pourVegetable() {System.out.println("加入白菜");} public void pourSauce() {System.out.println("加入盐和味精");} }
[Hasil jalankan]
Minyak
Panaskan minyak
Masukkan kobis
Masukkan sos cili
Tumis
-------------
Tuang minyak
Panaskan minyak
Tambahkan kobis
Masukkan garam dan MSG
Tumis dan tumisProses selesai dengan kod keluar 0
Kelebihan:
1 Meningkatkan kebolehgunaan semula kod, letakkan bahagian kod yang sama dalam kelas induk abstrak dan letakkan kod yang berbeza ke dalam subkelas yang berbeza. .
2. Kawalan terbalik direalisasikan kelas induk memanggil operasi subkelasnya, dan tingkah laku yang berbeza dilanjutkan melalui pelaksanaan khusus subkelas direalisasikan dan mematuhi "prinsip pembukaan dan penutupan". .
Kelemahan:
1 Setiap pelaksanaan yang berbeza perlu mentakrifkan subkelas, yang akan membawa kepada peningkatan dalam bilangan kelas, sistem yang lebih besar dan lebih banyak lagi. reka bentuk yang lebih abstrak.
2. Kaedah abstrak dalam kelas induk dilaksanakan oleh subkelas Hasil pelaksanaan subkelas akan mempengaruhi hasil kelas induk, yang membawa kepada struktur kawalan terbalik, yang meningkatkan kesukaran kod. membaca.
1 Apabila langkah keseluruhan algoritma adalah sangat tetap, tetapi beberapa bahagian berubah, anda boleh menggunakan corak kaedah templat untuk mengabstrak bahagian yang mudah ditukar untuk subkelas .
2. Adalah perlu untuk menggunakan subkelas untuk memutuskan sama ada untuk melaksanakan langkah tertentu dalam algoritma kelas induk, untuk merealisasikan kawalan terbalik subkelas ke atas kelas induk.
Atas ialah kandungan terperinci Corak Reka Bentuk Java: Analisis Contoh Corak Kaedah Templat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!