Corak Kaedah Templat dalam Java ialah corak reka bentuk tingkah laku yang mentakrifkan rangka kerja algoritma dan membenarkan subkelas mengatasi langkah tertentu tanpa mengubah struktur algoritma.
Ini mod adalah berdasarkan prinsip terbuka/tertutup, iaitu, ia terbuka kepada sambungan dan tertutup kepada pengubahsuaian Dalam mod kaedah templat, kelas induk mentakrifkan rangka algoritma, dan subkelas boleh menyesuaikan kaedah tertentu dengan melaksanakan abstrak. kaedah kelas induk Kelakuan langkah, keseluruhan langkah algoritma tidak akan berubah kerana perubahan subkelas
Corak kaedah templat biasanya termasuk kelas abstrak dan beberapa subkelas konkrit rangka kerja algoritma, termasuk beberapa Kaedah asas dan kaedah templat Kaedah templat adalah templat yang mengandungi langkah-langkah algoritma Setiap langkah dilaksanakan oleh kaedah abstrak atau kaedah lalai yang boleh dilaksanakan melaksanakan kaedah abstrak ini.
Kelas abstrak juga boleh mempunyai fungsi cangkuk Fungsi cangkuk biasanya merupakan fungsi maya dalam kelas abstrak, dan pelaksanaan lalainya kosong, supaya subkelas boleh memilih untuk menggantikan fungsi untuk dilaksanakan. tingkah laku tertentu. Dalam corak kaedah templat, fungsi cangkuk biasanya digunakan untuk melaksanakan operasi tertentu atau memeriksa keadaan dalam beberapa langkah tertentu algoritma mengatasi fungsi cangkuk atau Ubah suai tingkah laku algoritma Secara ringkasnya, fungsi cangkuk ialah konsep penting dalam corak kaedah templat, yang boleh digunakan untuk mempengaruhi tingkah laku algoritma atau memanjangkan fungsi algoritma
PelaksanaanPertama tentukan kelas abstrak kopipackage com.fanqiechaodan.templatemethod; /** * @Classname CoffeeMaker * @Description 咖啡抽象类 */ public abstract class CoffeeMaker { public final void makeCoffee() { boilWater(); brewCoffee(); pourInCup(); if (isCondiments()) { addCondiments(); } } private void boilWater() { System.out.println("煮水"); } protected abstract void brewCoffee(); private void pourInCup() { System.out.println("倒入杯子中"); } /** * 钩子函数;是否加入调料,由子类决定是否重写 * * @return */ protected boolean isCondiments() { return true; } protected abstract void addCondiments(); }
public class AmericanoMaker extends CoffeeMaker{ @Override protected void brewCoffee() { System.out.println("冲泡美式咖啡"); } @Override protected void addCondiments() { System.out.println("加入牛奶和糖"); } /** * 钩子函数;是否加入调料,由子类决定是否重写 * * @return */ @Override protected boolean isCondiments() { return false; } } public class LatteMaker extends CoffeeMaker{ @Override protected void brewCoffee() { System.out.println("冲泡浓缩咖啡"); } @Override protected void addCondiments() { System.out.println("添加奶泡和焦糖酱"); } }
package com.fanqiechaodan.templatemethod; /** * @author fanqiechaodan * @Classname Demo * @Description 模板方法模式 * @Date 2023/3/9 18:57 */ public class Demo { public static void main(String[] args) { CoffeeMaker americanoMaker = new AmericanoMaker(); americanoMaker.makeCoffee(); System.out.println(); CoffeeMaker latteMaker = new LatteMaker(); latteMaker.makeCoffee(); } }
Atas ialah kandungan terperinci Definisi rangka kerja algoritma dan penggunaan corak kaedah templat Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!