模板设计模式:
在编写代码时,要经常检查代码是否有问题,开闭原则是我们最常见最基本的原则。
开闭原则(OCP):一个软件实体;比如类、模块、函数等,应该对扩展开放,对修改关闭。
设计模式的关键在于第三方的解耦操作;接触设计模式,首先找到第三方;模板设计模式的第三方就是模板类。
模板方法定义了一个算法的步骤,并允许子类为一个或者多个步骤提供具体实现。在方法中定义一个骨架,而将一些步骤延迟在子类中实现;可以使子类再不改变算法的前提下重新定义算法中的某些步骤。

import java.util.Scanner;

abstract class CaffeineBeverage{

final void makingBeverage(){//核心流程;用fianl定义;防止被修改;强调封装性boilWater();brew();pourCup();if(customerDemand()==true) {addSth();}
}
final void boilWater(){System.out.println("将水烧开--------");
}
final void pourCup(){System.out.println("将饮料倒进杯子---------");
}
//提供给子类让其覆写;具体子类的具体步骤不一样
abstract void brew();
abstract void addSth();
//钩子方法
boolean customerDemand(){return true;
}

}
class Coffer extends CaffeineBeverage{

@Override
void brew() {System.out.println("冲泡咖啡");
}@Override
void addSth() {System.out.println("加奶或加糖");
}
//覆写钩子方法;强调了代码的扩展性
boolean customerDemand(){String str=customerInit();if(str.equals("y")){return true;}else{return false;}
}
private String customerInit(){System.out.println("请问您需要加糖或奶吗?y/n");String str=null;Scanner scanner=new Scanner(System.in);str=scanner.nextLine();return str;
}

}
class Tea extends CaffeineBeverage{

@Override
void brew() {System.out.println("浸泡茶叶");
}@Override
void addSth() {System.out.println("加柠檬");
}

}
public class Template {

public static void main(String[] args) {//抽象类不能直接实例化对象;需要通过子类来实现CaffeineBeverage coffer=new Coffer();coffer.makingBeverage();System.out.println("------------------------------------------");CaffeineBeverage tea=new Tea();tea.makingBeverage();
}

}

Java模板设计模式相关推荐

  1. Java 设计模式 --- Template 模式 Java Template 模式 Java 模板设计模式

    Java 设计模式 --- Template 模式 Java Template 模式 Java 模板设计模式 一.概述 模板设计模式: 父类定义通用抽象的功能方法,子类负责具体的实现. 本文将以一个通 ...

  2. Java模板设计模式与接口

    目录 一.星巴克咖啡冲泡法 二.星巴克茶冲泡法 三.模板设计模式 超类实现 子类实现 测试类 四.接口 接口使用原则 接口的应用场景 1.定义规范/标准 2.表示一种能力/行为 PS:本章节所有源代码 ...

  3. 模板设计模式,简单Java代码实现

    /**模板设计模式:定义一个算法的骨架,而将具体的算法延迟到子类中进行实现* 优点:* 使用模板方法模式,在定义算法骨架的同时,可以很灵活地实现具体的算法,满足用户灵活多变的需求* 缺点:* 如果算法 ...

  4. java 抽象属性 设计_Java 抽象类与模板设计模式详解

    抽象类 抽象类是为了方法覆写而提供的类结构,因为其无法自身直接进行对象实例化操作,所以在实际应用中,抽象类主要目的是进行过程操作使用,当你要使用抽象类进行开发的时候,往往都是在你设计中需要解决类继承问 ...

  5. Java笔记018-抽象类、抽象类最佳实践-模板设计模式、接口、内部类

    目录 抽象类 先看一个问题 小结: 抽象类快速入门 抽象类的介绍 抽象类使用的注意事项和细节讨论 抽象类练习题 抽象类最佳实践-模板设计模式 基本介绍 模板设计模式能解决的问题 最佳实践 最佳实践 接 ...

  6. 【26天高效学完Java编程】Day11:继承、抽象类、模板设计模式详解

    本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...

  7. Java抽象类(abstract)的定义和设计模式(模板设计模式)

    1.抽象类 package com.itstudy.bean;//抽象类/*** 抽象类:描述的内容不是具体的内容* 1.有abstract修改,并且有抽象方法* 2.一共类中有抽象方法,那么这个类一 ...

  8. Java——抽象类+模板设计模式

    目录 1.抽象类介绍 2.抽象类细节 3.抽象类细节02 4.抽象类实例(员工问题) test01.java Employee.java Manager.java CommonEmployee.jav ...

  9. Java 抽象类最佳实践-模板设计模式

    目录 1.基本介绍 2.模板设计模式能解决的问题 3.最佳实践 1.基本介绍 抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展.改造,但子类总体上会保留抽 ...

最新文章

  1. 嘿嘿 刚刚进来 记录下
  2. asp.net request详细说明
  3. linux .ssh隐藏,linux安全配置-将ssh服务隐藏于Internet(端口碰撞)
  4. Spring-学习笔记06【spring_day02资料_dbutils】
  5. Hobbit玩转Zynq MPSoC系列之2:TPG输入+VCU编码+rtp网络传输
  6. mfc存储颜色到mysql_mfc存储二进制文件
  7. WPF实现背景透明磨砂,并通过HandyControl组件实现弹出等待框
  8. 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  9. Python之认识世界
  10. 达观杯文本智能处理(5)
  11. Julia: bug? = split ,isnumber
  12. C++中strncpy函数和strncpy_s函数的使用及注意事项
  13. Citavi 6使用教程
  14. 5ecsgo启动失败2错误代码2,5E打开csgo说csgo客户端需要更新 然后进不去游戏怎么回事?...
  15. Tara's Beautiful Permutations 组合数学
  16. Pytorch报错解决:The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimensio
  17. 松香的用法(电烙铁焊接)
  18. asp.net实现识别客户端浏览器或操作系统
  19. Java File相关源码分析:File、FileInputStream、InputStreamReader
  20. 0.1.3-01 合宙CORE-ESP32-C3制作1.3寸ST7789驱动的简单相册

热门文章

  1. vue 打印(模板套打)
  2. PANSS 阳性与阴性症状量表
  3. Redisson实现分布式锁原理
  4. java入门~第十六天 对象数组以及集合和相关数据结构
  5. java咖啡_JAVA—咖啡馆
  6. 【Android】自定义控件-颜色选择器/取色器
  7. Hibernate开发实践笔记--对象在set属性时更新了数据库问题
  8. WebService soap报文请求与响应报文解析
  9. MATLAB 数据及基本运算 --持续更新
  10. MAE同期工作!MSRA新作SimMIM收录CVPR 2022!高达87.1%准确率!掩码图像建模新框架...