Mod templat
Dalam Corak Templat, kelas abstrak secara terbuka mentakrifkan cara/templat untuk melaksanakan kaedahnya. Subkelasnya boleh mengatasi pelaksanaan kaedah seperti yang diperlukan, tetapi panggilan akan dibuat mengikut cara yang ditakrifkan dalam kelas abstrak. Corak reka bentuk jenis ini ialah corak tingkah laku.
Pengenalan
Niat: Tentukan rangka algoritma dalam operasi, sambil menangguhkan beberapa langkah ke subkelas. Kaedah templat membenarkan subkelas untuk mentakrifkan semula langkah-langkah tertentu algoritma tanpa mengubah struktur algoritma.
Penyelesaian utama: Sesetengah kaedah adalah perkara biasa, tetapi kaedah ini ditulis semula dalam setiap subkelas.
Bila hendak digunakan: Terdapat beberapa kaedah umum.
Cara menyelesaikan: Abstrak algoritma am ini.
Kod utama: dilaksanakan dalam kelas abstrak dan langkah lain dilaksanakan dalam subkelas.
Contoh aplikasi: 1. Semasa membina rumah, asas, pendawaian, dan paip air semuanya sama Hanya pada peringkat akhir pembinaan sahaja terdapat perbezaan seperti menambah almari dan pagar. 2. 81 kesukaran yang ditetapkan oleh Bodhisattva dalam Perjalanan ke Barat adalah rangka kerja logik peringkat atasan. 3. Sokongan untuk Hibernate dalam Spirng merangkumi beberapa kaedah yang telah ditetapkan, seperti membuka urus niaga, mendapatkan Sesi, menutup Sesi, dll. Pengaturcara tidak perlu berulang kali menulis kod piawai, dan boleh menyimpannya dengan hanya membuang entiti.
Kelebihan: 1. Bungkus bahagian yang tetap dan kembangkan bahagian yang berubah-ubah. 2. Ekstrak kod awam untuk memudahkan penyelenggaraan. 3. Tingkah laku dikawal oleh kelas induk dan dilaksanakan oleh subkelas.
Kelemahan: Setiap pelaksanaan yang berbeza memerlukan subkelas untuk dilaksanakan, mengakibatkan peningkatan dalam bilangan kelas dan menjadikan sistem lebih besar.
Senario penggunaan: 1 Terdapat kaedah biasa untuk berbilang subkelas, dan logiknya adalah sama. 2. Kaedah penting dan kompleks boleh dianggap sebagai kaedah templat.
Nota: Untuk mengelakkan operasi berniat jahat, kata kunci akhir biasanya ditambahkan pada kaedah templat.
Pelaksanaan
Kami akan mencipta kelas abstrak Permainan yang mentakrifkan tindakan, di mana kaedah templat ditetapkan kepada muktamad supaya ia tidak akan ditindih. Kriket dan Bola Sepak ialah kelas entiti yang melanjutkan Permainan dan ia mengatasi kaedah kelas abstrak.
TemplatePatternDemo, kelas demo kami menggunakan Permainan untuk menunjukkan penggunaan corak templat.
Langkah 1
Buat kelas abstrak dengan kaedah templatnya ditetapkan kepada muktamad.
Game.java
public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); //模板 public final void play(){ //初始化游戏 initialize(); //开始游戏 startPlay(); //结束游戏 endPlay(); } }
Langkah 2
Buat kelas entiti yang memanjangkan kelas di atas.
Cricket.java
public class Cricket extends Game { @Override void endPlay() { System.out.println("Cricket Game Finished!"); } @Override void initialize() { System.out.println("Cricket Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Cricket Game Started. Enjoy the game!"); } }
Football.java
public class Football extends Game { @Override void endPlay() { System.out.println("Football Game Finished!"); } @Override void initialize() { System.out.println("Football Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Football Game Started. Enjoy the game!"); } }
Langkah 3
Gunakan Kaedah templat play() Permainan menunjukkan cara permainan ditakrifkan.
TemplatePatternDemo.java
public class TemplatePatternDemo { public static void main(String[] args) { Game game = new Cricket(); game.play(); System.out.println(); game = new Football(); game.play(); } }
Langkah 4
Sahkan output.
Cricket Game Initialized! Start playing. Cricket Game Started. Enjoy the game! Cricket Game Finished! Football Game Initialized! Start playing. Football Game Started. Enjoy the game! Football Game Finished!