Maison > Java > javaDidacticiel > le corps du texte

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

WBOY
Libérer: 2023-05-08 16:46:16
avant
1480 Les gens l'ont consulté

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();
}
Copier après la connexion

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("添加奶泡和焦糖酱");
    }
}
Copier après la connexion

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();
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!