一谈到模板方法,“菜鸟”们有自信了,因为它的存在,可以说大多数程序员都真正并应用过了设计模式,因为。。。

--------对模板方法感触最深的应该是公司技术大牛和刚入职的新员工。技术大牛搭建好主框架,具体实现交给新员工。

定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构既可重定义该算法中的某些特定步骤。

实例:

情景1:用本人开发双色球预测软件做实例。当某一期的双色球结果出来以后,我很希望能够验证它是否符合我定义的规则,并找到该组号码的规律。

应用1:方法

假设1:在没有时间的情况下,我会定义好需要检验哪些规则,至于具体这些规则如何实现,我可以等到有时间的时候来完成。

代码:

输入:当期号码Set 输出:是否符合规则boolean

public boolean isRedValid(Set redSet) {if(!isRedValidByLX2(redSet)){return false;}if(!isRedValidByCmp(redSet)){return false;}if(!isRedValidByFC(redSet)){return false;}if(!isRedValidByApriori(redSet)){return false;}return true;}
public boolean isRedValidByLX2(Set redSet) {boolean flag = true;List<String> list = Test.getInvalidFC2LX();String tmp = "";for (String s : list) {if (redSet.contains(Integer.parseInt(s.split(",")[0]))&& redSet.contains(Integer.parseInt(s.split(",")[1]))) {tmp = s;flag = false;break;}}if (!flag) {System.out.println("注意:生成的数字包含不可能生成的连续2连号" + tmp+ "需要重新生成!");try {String s="";Iterator it = redSet.iterator();for (int i = 0; i < 6; i++) {if (it.hasNext()) {s+=(it.next().toString());}}FileOperation.FileWriteFCYes("注意:生成的数字包含不可能生成的连续2连号" + tmp+ "需要重新生成!");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}return flag;}

其他代码略

情景2:入职时,你的team leader想检验你的代码水平,然后又想你的工作队项目有益,他把主要逻辑一写,剩下的交给你去实现。

应用2:类

假设2:如果是在公司,如果,我是说如果我是一个大牛,我需要写一个类,它的作用是数据结构之间的转换。功能需要,实现其实简单。这个时候,我会把框架打好,然后让我的“徒弟”去实现这些方法。

代码:

我需要这样

import java.util.List;public abstract class DataFormatConvertAbstract {// 将“116”变成1,1,6;将"09,17,"变成9,17(整数)public abstract int[] strToIntArr(String s);// 将“116”变成1,1,6;将"09,17,"变成09,17(字符串)public abstract String[] strToStrArr(String s);// 列表转换成字符串public abstract String[] listToStrArr(List<String> list);
}

我徒弟需要这样

public class DataFormatConvert implements DataFormatConvertAbstract {// 将“116”变成1,1,6;将"09,17,"变成9,17(整数)public static int[] strToIntArr(String s) {int[] result;if (s.indexOf(",") == -1) {char[] tmp;tmp = s.toCharArray();result = new int[tmp.length];for (int i = 0; i < tmp.length; i++) {result[i] = Integer.parseInt(String.valueOf(tmp[i]));}} else {String[] tmp = s.split(",");result = new int[tmp.length];for (int i = 0; i < tmp.length; i++) {result[i] = Integer.parseInt(String.valueOf(tmp[i]));}}return result;}// 将“116”变成1,1,6;将"09,17,"变成09,17(字符串)public static String[] strToStrArr(String s) {String[] resultStr = null;if (s.indexOf(",") == -1) {char[] tmp;tmp = s.toCharArray();resultStr = new String[tmp.length];for (int i = 0; i < tmp.length; i++) {resultStr[i] = String.valueOf(tmp[i]);}} else {String[] tmp = s.split(",");resultStr = new String[tmp.length];for (int i = 0; i < tmp.length; i++) {resultStr[i] = tmp[i];}}return resultStr;}// 将“116”变成1,1,6;将"09,17,"变成09,17(字符串)public static List<String> strToList(String s) {List<String> result = null;if (s.indexOf(",") == -1) {char[] tmp;tmp = s.toCharArray();result = new ArrayList<String>();for (int i = 0; i < tmp.length; i++) {result.add(String.valueOf(tmp[i]));}} else {String[] tmp = s.split(",");result = new ArrayList<String>();for (int i = 0; i < tmp.length; i++) {result.add(tmp[i]);}}return result;}
}

最后,我测试

DataFormatConvertAbstract dfca=new DataFormatConvert();

int[] m = strToIntArr("119,09");for (int i = 0; i < m.length; i++) {System.out.println(m[i]);}String[] m = strToStrArr("119,09,");for (int i = 0; i < m.length; i++) {System.out.println(m[i]);}

It's all!!!

模板方法模式--介绍、应用及代码相关推荐

  1. 模板方法模式介绍与示例

    目录 一.模板方法模式简介 二.代码示例 三.总结 一.模板方法模式简介 模板方法模式的核心设计思路是通过在抽象类中公开定义抽象方法的执行顺序,并将抽象方法的设定为只有子类去实现,但不设计独立的访问方 ...

  2. 模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)

    模板方法模式 一.模板方法模式的概念和角色 (一).模板方法模式的概念 (二).模板方法模式的角色 二.模板方法模式的应用场景 三. 模板方法模式的代码示例 四.模板方法模式重构JDBC操作业务 五. ...

  3. 设计模式----模板方法模式UML和实现代码

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是模板方法模式? 模板方法模式(Template Method) 定义一个操作中算法的骨架,而将一些步骤延迟到子类中. ...

  4. 23种设计模式-抽象工厂模式介绍加实战代码

    1.描述 通俗一点来讲,抽象工厂模式就是在工厂方法模式的抽象工厂类中规范多个同类产品. 工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂,而抽 ...

  5. 设计模式:模板方法模式(C++)【喝咖啡还是喝茶】

    模板方法模式介绍 我们在软件设计中经常会有一些步骤是一样的,只是实现不一样,这种情况我们就可以使用模板方法模式.何为模板,就是有固定的步骤,可以复用嘛.来看看模板方法模式:定义一个操作中的算法的骨架, ...

  6. 设计模式之模板方法模式(附应用举例实现)

    文章目录 1 模板方法模式介绍 2 模板方法模式详解 2.1 模板方法模式结构 2.2 模板方法模式实现 2.3 模板方法模式应用举例 1 模板方法模式介绍 在软件开发中,某个方法的实现需要多个步骤, ...

  7. 设计模式------模板方法模式

    1.模板方法模式介绍 一.意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 二.适用性 1.一次性实现一个算法的不变部分,并且 ...

  8. 设计模式读书笔记-----模板方法模式

    首先我们先来看两个例子:冲咖啡和泡茶.冲咖啡和泡茶的基本流程如下: 所以用代码来创建如下: 咖啡:Caffee.java public class Coffee {void prepareRecipe ...

  9. 韩顺平设计模式之模板方法模式

    目录 一.豆浆制作问题 二.基本介绍 三.模板方法模式原理类图 3.1 原理类图 3.2 对原理类图的说明-即(模板方法模式的角色及职责) 四.模板方法模式解决豆浆制作问题 五.模板方法模式的钩子方法 ...

最新文章

  1. 【Java_基础】Java中Native关键字的作用
  2. http://tpl.amazeui.org/
  3. Django的是如何工作的
  4. 计算机自动启动无法开机,为何插上电源 电脑会自动开机 但是又开不起来
  5. vba交付图表设计_您是在为交付目的而“设计”吗?
  6. Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down(树状数组求逆序对)
  7. [css] 如何形成BFC?
  8. 【转】SpringMVC整合websocket实现消息推送及触发
  9. linux 中软件安装的三种方法
  10. 出现报错Maximum call stack size exceeded
  11. appleId登录java
  12. 1寸2寸3寸5寸6寸8寸10寸照片的具体尺寸(附常用照片尺寸对照表)
  13. matlab中rand函数用法
  14. RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
  15. 为什么编c语言总有一个错误,为什么程序最后总会显示有1个错误
  16. JavaScript根据用户输入动态计算周数
  17. 网络安全渗透技术(入门视频课程)-李云鹏-专题视频课程
  18. 【征文大赛】TiDB 社区第二届征文大赛,一次性带走社区全部新周边,还有bose 降噪耳机、倍轻松按摩仪等你拿!
  19. 动态规划之背包问题 01背包
  20. 正确使用pageX、pageY、offsetLeft、offsetTop

热门文章

  1. source insight 删除工程后,旧工程信息还是保留在工程打开选项的解决办法
  2. 活动倒计时范例(日期倒计时例子)
  3. win10+ubuntu双系统,重装win10后修复ubuntu引导的方法
  4. Unity插件ProBuilder
  5. 高清精美壁纸:2013年5月桌面日历壁纸免费下载
  6. 验证用户名与密码的15个正则
  7. Maven基础知识(个人总结)
  8. 在linux下怎么安装.bin的文件
  9. Python自动化开发基础 分布式监控系统开发实战 day8-李杰-专题视频课程
  10. 软件测试初识以及测试流程