Maison >Java >javaDidacticiel >Définition du cadre d'algorithme et utilisation du modèle de méthode de modèle Java

Définition du cadre d'algorithme et utilisation du modèle de méthode de modèle Java

WBOY
WBOYavant
2023-05-08 16:46:161553parcourir

Introduction

Le modèle de méthode modèle en Java est un modèle de conception comportemental qui définit le cadre d'un algorithme et permet aux sous-classes de remplacer certaines étapes sans changer la structure de l'algorithme.

Le modèle est basé sur le principe ouvert/fermé. Autrement dit, il est ouvert à l'extension et fermé à la modification.Dans le modèle de méthode modèle, la classe parent définit le squelette d'un algorithme et la sous-classe peut personnaliser le comportement de certaines étapes en implémentant la méthode abstraite de la classe parent. l'étape entière de l'algorithme ne changera pas en raison des changements liés aux modifications des sous-classes

Le modèle de méthode de modèle comprend généralement une classe abstraite et plusieurs sous-classes concrètes. La classe abstraite définit le cadre de l'algorithme, y compris certaines méthodes de base et une méthode de modèle. La méthode est un modèle, qui contient Chaque étape a une méthode abstraite ou une méthode par défaut. Des sous-classes spécifiques peuvent implémenter leur propre comportement en implémentant ces méthodes abstraites

Il peut également y avoir des fonctions hook dans les classes abstraites, et les fonctions hook sont généralement celles par défaut. L'implémentation d'une fonction virtuelle dans une classe abstraite est vide, de sorte que les sous-classes peuvent choisir de remplacer la fonction pour implémenter des comportements spécifiques. Dans le modèle de méthode modèle, les fonctions de hook sont généralement utilisées pour effectuer des opérations spécifiques dans certaines étapes spécifiques de l'algorithme. conditions de vérification. Une autre utilisation des fonctions hook est de fournir un moyen d'étendre un algorithme. Les sous-classes peuvent ajouter des étapes supplémentaires ou modifier le comportement de l'algorithme en remplaçant la fonction hook. En bref, la fonction hook est un concept important dans la méthode modèle. Il peut être utilisé pour affecter le comportement de l'algorithme ou étendre les fonctionnalités de l'algorithme.

Implémentation

Définissez d'abord la classe abstraite du café

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

Définissez ensuite deux sous-classes spécifiques

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

Test

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

Définition du cadre dalgorithme et utilisation du modèle de méthode de modèle Java

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer