原创内容,转载请注明出处
1、模版模式
模版模式,顾名思义,是指将一些通用的行为实现都已完成,然后一些可变的行为交由我们来实现完成。在实际生活中有很多这样的例子,比如填写合同协议或者其他文件,文件上已经有通用的信息,我们只需要填写我们的个人信息并且签名即可,该文件就是一个模版。
UML类图表示
创建父类SuperClass
package com.test.designermodel.templatemodel; public abstract class SuperClass { public void process(){ System.out.println("通用方法实现开始"); excute(); System.out.println("通用方法实现结束"); } protected abstract void excute(); }
创建子类实现类ConcreteClass
package com.test.designermodel.templatemodel; public class ConcreteClass extends SuperClass { @Override protected void excute() { System.out.println("---执行处理---"); } }
编写Junit测试代码
/** * Java模版模式 */ @Test public void testTemplateModel(){ ConcreteClass concreteClass = new ConcreteClass(); concreteClass.process(); }
测试结果如下
2、回调模式
回调模式在Spring中有大量应用,比如Spring 的DaoSupport系列类,都使用了模版和回调模式组合。
上述例子可以这样实现,将execute方法抽出来,做成一个接口。
UML类图表示
创建Supportclass类
package com.test.designermodel.templatemodel.callback; public class SupportClass { public void process(CallBack callBack){ System.out.println("通用方法实现开始"); callBack.excute(); System.out.println("通用方法实现结束"); } }
创建回调接口CallBack类
package com.test.designermodel.templatemodel.callback; public interface CallBack { public void excute(); }
创建Junit测试代码
/** * Java模版模式和回调模式 */ @Test public void testTemplateModelAndCallback(){ new SupportClass().process(new CallBack() { public void excute() { System.out.println("---------回调执行处理---------"); } }); }
测试结果如下图
源代码如附件
如上测试结果客户端调用SupportClass类的方法,SupportClass类之后会反过来调用客户端的Callback接口方法。
相关推荐
NULL 博文链接:https://zhang23242.iteye.com/blog/1904116
复用和扩展是模板模式的两大作用,实际上,还有另外一个技术概念,也能起到跟模板模式相同的作用,那就是回调(Callback)。A 类事先注册某个函数 F 到 B类
NULL 博文链接:https://gutou9.iteye.com/blog/286812
在这种情况下,策略模式可以有三种实现方式:一是在上下文中实现公共功能,让所有具体的策略算法回调这些方法;二是把策略的接口改成抽象类,然后在里面实现具体算法的公共功能;三是给所有的策略算法定义一个抽象的...
自己前段时间在做微信,刚刚开始企业号回调模式验证总是出问题,找了很多代码,结果都不行,本人现在整理了一个完整的回调模式的验证代码,只需改三个参数即可。
一、回调的实现(模板方法模式)定义:设计操作的算法骨架,将某些步骤延迟到子类中实现(自定义性质很强)。//搭建骨架public final void proce
spring模板模代码 学习模式用 了解学习模板模式和接口回调
一篇关于C++模板 设计模式 软件架构的文档,里面实现了一个泛化的命令模式和观察者模式
本文实例讲述了PHP微信企业号开发之回调模式开启与用法。...下面我先贴出我验证成功的回调模式开启的代码 <?php //回调开启 include_once "WXBizMsgCrypt.php"; // 假设企业号在公众平台上设置的参数如下 $encodin
当我们使用 dubbo 或者 feign 进行 RPC 调用用时,通常的调用模板方式如下: public BizResponse method(BizRequest request){ RpcRequest rpcRequest = buildRpcRequest(); RpcReponse reuslt = xxxFacade.invoke...
钩子方法-回调方法-模板模式 博客地址:https://blog.csdn.net/qq_36963950/article/details/107743105
伪静态模式(REWRITE模式)QQ回调地址填写:http://域名/oauth-callback-mod-qq 如果你的分割号是/的话就换成http://域名/oauth/callback/mod/qq 伪静态模式(PATHINFO模式)QQ回调地址填写:http://域名/index....
, 主要内容, 介绍了查询和读写文件, 研究了流、文件系统、网络和自动化单元测试, 详细描述了如何读写数据流, 从零开始构建TCP和HTTP服务器与客户端, 介绍使用数据报、测试和调试模块以及控制回调流程, 展示了如何用...
U8g2库的使用需要选择合适的构造函数,初始化显示器,设置引脚号,编写回调函数和绘图指令。 U8g2图形库的优点是可以使用多种字体,支持中文显示,提供丰富的图形程序,如线条,框,圆,位图等。U8g2图形库的缺点是...
vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。 具体步骤: 第一步: 需要 observe 的数据...
选择哪些数据用于展示,指定显示模板,每个URL对应一个回调函数。 2.新建一个应用 在django最快程序开发流程上继续改进。 python manage.py startapp hello2app 3.修改hello2app hello2app中的views.py代码如下 ...
主要新特性包括采用PHP7强类型(严格模式)、支持更多的PSR规范、多应用支持、ORM组件独立、改进的中间件机制、更强大和易用的查询、全新的事件系统、支持容器invoke回调模板引擎组件独立等。 手册还涵盖了ThinkPHP...
JdbcTemplate类对可变部分采用回调接口方式实现,如ConnectionCallback通过回调接口返回给用户一个连接,从而可以使用该连接做任何事情、StatementCallback通过回调接口返回给用户一个Statement,从而可以使用该...
08_C动态库升级成框架案例_方法1动态库中直接添加回调函数_传智扫地僧 09_C动态库升级成框架案例_方法2把回调函数缓存到动态库_编写 10_C动态库升级成框架案例_方法2把回调函数混存到动态库_测试 11_C++基础课程day...