Rumah  >  Artikel  >  Java  >  Definisi rangka kerja algoritma dan penggunaan corak kaedah templat Java

Definisi rangka kerja algoritma dan penggunaan corak kaedah templat Java

WBOY
WBOYke hadapan
2023-05-08 16:46:161510semak imbas

Pengenalan

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

Pelaksanaan

Pertama tentukan kelas abstrak kopi

package 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();
}

Kedua tentukan dua subkelas khusus

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("添加奶泡和焦糖酱");
    }
}

Ujian

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();
    }
}

Definisi rangka kerja algoritma dan penggunaan corak kaedah templat Java

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam