当前位置: 首页 > news >正文

003__JAVA模板方法-设计模式

模板方法

定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现

举个例子,把大象放进冰箱分几步,第一打开冰箱,第二打大象放进冰箱,第三把冰箱关闭。这三个步骤就可以用模板方法的设计模式。

定义补充:模板方法使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤

类型:行为型

适用场景
(1)一次性实现一个算法的不变部分,并将可变的行为留给子类来实现,(2)各子类中公共的行为被提取出来集中到一个公共父类中,从而避免代码重复。

优点
(1)提高复用性
(2)提高扩展性
(3)符合开闭原则
缺点
(1)类数目的增加,
(2)增加了系统实现的复杂度,
(3)继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍

扩展:钩子方法,钩子方法提供了缺省的行为,子类可以在必要时进行扩展,(简单的说,钩子方法是这个模板对子类更进一层的开放以及扩展)

钩子的实现方法:

是对于抽象方法或者接口中定义的方法的一个空实现,在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用。

模板方法例子(不涉及钩子方法):

public abstract class  Cart {public final  void start(){System.out.println("按照规范启动了----");}//启动车public abstract  void speed();//速度public final void stop(){System.out.println("按照规范停止了----");}//关闭车public final void show(){this.start();this.speed();this.stop();}
}
public class BydCart extends Cart{@Overridepublic void speed() {//我们可以将车看成一个骨架,但是速度可以由我们自己决定,//相当于我们算法的骨架,但是实现算法的某一个步骤可以由我们自己决定System.out.println("Byd speed 60km/h.........");}//测试show()public static void main(String[] args) {BydCart bydCart = new BydCart();bydCart.show();}
}
http://www.lryc.cn/news/13077.html

相关文章:

  • Springboot项目集成Netty组件
  • python 中的import cfg问题
  • [oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB
  • vue3.0 生命周期
  • CGAL 数字类型
  • 如何将Python打包后的exe还原成.py?
  • CJSON简单介绍
  • 算法训练营 day49 动态规划 爬楼梯 (进阶)零钱兑换 完全平方数
  • Vue:extends继承组件复用性
  • ChatGPT 的一些思考
  • GEE学习笔记 六十九:【GEE之Python版教程三】Python基础编程一
  • 大数据全系安装
  • stable-diffusion-webui 安装使用
  • 3D点云处理:点云聚类--FEC: Fast Euclidean Clustering for Point Cloud Segmentation
  • 华为OD机试题 - 射击比赛(JavaScript)| 代码+思路+重要知识点
  • 流程引擎之Flowable简介
  • AcWing:4861. 构造数列、4862. 浇花(C++)
  • 进程的概念
  • 自动化测试5年经验,分享一些心得
  • independentsoft.de/MSG .NET Framework Crack
  • 基于Transformer的NLP处理管线
  • 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树
  • 使用Fairseq进行Bart预训练
  • n阶数字回转方阵 ← 模拟法
  • 【人工智能AI】二、NoSQL 基础知识《NoSQL 企业级基础入门与进阶实战》
  • Camera Rolling Shutter和Global Shutter的区别
  • 模版之AnyType
  • 【汇编】一、环境搭建(一只 Assember 的成长史)
  • 【博客628】k8s pod访问集群外域名原理以及主机开启了systemd-resolved的不同情况
  • 测试3.测试方法的分类