Java抽象类深入理解-----模板方法设计模式(Templete Method)
模板方法设计模式(Templete Method)
定义一个操作中的算法骨架,而将一些可变部分的实现延迟到子类中。
模板方法设计模式使得子类可以不改变一个算法的结构即可重新定义该算法某些特定的步骤。
import java.util.Random; public class AbstractTest002 { public static void main(String[] args) { JudgeMent jm = new JudgeMent(); jm.action(); } } abstract class AbMain{ //现实工作中 基本的套路我们知道 但是有些事情是不能去确定的 需要其他的对象帮助去完成. //权限的验证 统一的验证在父类中实现 //算法骨架 public void action(){ if (judge()){ System.out.println("结果为真!"); }else{ System.out.println("结果为假!"); } } //定义抽象方法 public abstract boolean judge(); } class JudgeMent extends AbMain{ //用子类去实现父类定义的抽象方法 (延迟到子类中) Random r = new Random(); @Override public boolean judge() { // TODO Auto-generated method stub return r.nextBoolean(); } }
Java抽象类深入理解-----模板方法设计模式(Templete Method)的更多相关文章
- 设计模式-模板方法设计模式--Template Method design pattern
/** * Abstract implementation of the {@link org.springframework.context.ApplicationContext} * interf ...
- Java 抽象类的理解
1. 基本概念 用abstract修饰的类是抽象类.如果类中有方法是abstract类型的,那么此类肯定是abstract类型的,也就是说此类的修饰符肯定有abstract(也就是说,有抽象方法的类是 ...
- java 抽象类 以及模块方法设计模式,接口
模块方法设计模式: 可以实现多接口 接口可以继承接口 接口与接口之间可以多继承.类与类之间不行
- 用最简单的例子理解模板方法模式(Template Method Pattern)
假设要做一道红烧肉,做法有很多,在不同的做法中都有相同的部分,比如都要放油.放肉.放调料等.也有不同之处,比如有些做法放可乐,有些做法放甜蜜酱,等等. 先提炼出一个抽象类,该类不仅有制作红烧肉的各个步 ...
- C++设计模式:Template Method
我使用过一个简单的后台服务框架.这个框架上手很容易,我只需要继承一个基类,同时实现,或重写(override)基类声明的几个接口(这些接口声明为虚函数,或者纯虚函数),然后调用基类定义好的run()函 ...
- IEnumerator<TItem>和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了
IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...
- JAVA模板方法设计模式(从现实生活角度理解代码原理)
概述: 定义一个功能的框架(骨架),一部分功能是确定的,一部分功能是不确定的,先把确定的部分实现,把不确定的部分延迟到子类中实现. 实现该模式的关键步骤: 第一步:抽象类,实现模板方法,定义功能(确定 ...
- JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展
JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...
- 模板方法模式 Template method 行为型 设计模式(二十六)
模板方法模式 Template method 上图为网上百度的一份简历模板截图 相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为 ...
随机推荐
- Linux/Unix工具与正则表达式的POSIX规范
http://www.infoq.com/cn/news/2011/07/regular-expressions-6-POSIX 对正则表达式有基本了解的读者,一定不会陌生『\d』.『[a-z]+』之 ...
- 解压和生成 system.img&data.img ( ext4格式)
另一篇文章讲述了如何解压和生成system.img, 那是针对yaffs2格式的文件系统镜像. 目前越来越多的Android手机放弃了nand, 更多采用了emmc为内部存储设备. 以emmc为存储设 ...
- 关于MPLS协议几个容易忽略的点
1.随着硬件技术的进步,产生了高速路由器和三层交换机,MPLS提高转发的速度的初衷已经没有多少意义.但是MPLS由于其支持标签栈和面向连接的特点,使其在虚拟专用网,流量工程,QoS等方面得到广泛的应用 ...
- cf B. Fence
http://codeforces.com/contest/363/problem/B #include <cstdio> #include <cstring> #includ ...
- LeetCode_Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- DDUI For Delphi Seattle Directui界面组件
http://www.delphigear.cn/0/11258/go.aspx http://bbs.csdn.net/topics/390285613
- 【转】Ubuntu命令行下安装、卸载、管理软件包的方法
原文网址:http://oss.org.cn/html/47/n-67447.html 一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname ...
- Html5/Css3 向下兼容placeholder
Css3下input标签的placeholder属性在IE10以下是不兼容的,页面加入这段JS脚本后,能够兼容IE6+ //@charset "utf-8"; /** * jque ...
- gzcompress, gzencode, gzdeflate三个压缩函数的对比
PHP的自带的函数中,有三个压缩相关的函数:gzcompress.gzencode.gzdeflate,下面我们通过一段程序,来比较一下这三个函数的压缩比.代码:$string = "8ae ...
- Log4j使用说明
Log4J实例应用开发 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对Logger.Appender及Layout的分别使用.Log4j支持两种配置文件格式,一 ...