自学内容网 自学内容网

设计模式代码实战-模版方法模式

1、问题描述

小明喜欢品尝不同类型的咖啡,她发现每种咖啡的制作过程有一些相同的步骤,他决定设计一个简单的咖啡制作系统,使用模板方法模式定义咖啡的制作过程。系统支持两种咖啡类型:美式咖啡(American Coffee)和拿铁(Latte)。
咖啡制作过程包括以下步骤:

  1. 研磨咖啡豆 Grinding coffee beans
  2. 冲泡咖啡 Brewing coffee
  3. 添加调料 Adding condiments
    其中,美式咖啡和拿铁的调料添加方式略有不同, 拿铁在添加调料时需要添加牛奶Adding milk

输入示例
1
2
输出示例
Making American Coffee:
Grinding coffee beans
Brewing coffee
Adding condiments

Making Latte:
Grinding coffee beans
Brewing coffee
Adding milk
Adding condiments

2、模版方法模式

方法模版类:定义了模版方法有哪些抽象方法,该抽象方法等具体的算法实现
具体方法:实现模版类的抽象方法
请添加图片描述

3、代码

import com.sun.java.accessibility.util.TopLevelWindowListener;

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        while(sc.hasNextInt()){
            int tag=sc.nextInt();
            if(tag==1){
                System.out.println("Making American Coffee:");
                AmericanCoffee a=new AmericanCoffee();
                a.template();
            }else if(tag==2){
                System.out.println("Making Latte:");
                LatteCoffee l=new LatteCoffee();
                l.template();
            }
        }


    }
}

abstract class coffee{
    public void template(){
        Grind();
        Brew();
        Add();
    }

    abstract  void Grind();
    abstract  void Brew();
    abstract  void Add();
}

class AmericanCoffee extends coffee{

    @Override
    void Grind() {
        System.out.println("Grinding coffee beans");
    }

    @Override
    void Brew() {
        System.out.println("Brewing coffee");
    }

    @Override
    void Add() {
        System.out.println("Adding condiments");
    }
}


class LatteCoffee extends coffee{

    @Override
    void Grind() {
        System.out.println("Grinding coffee beans");
    }

    @Override
    void Brew() {
        System.out.println("Brewing coffee");

    }

    @Override
    void Add() {
        System.out.println("Adding milk");
        System.out.println("Adding condiments");
    }
}

原文地址:https://blog.csdn.net/vince1998/article/details/137882184

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!