模板模式的代码实现demo
来源:互联网 发布:所有股票数据 编辑:程序博客网 时间:2024/06/04 19:18
首先新建一个父类抽象类AbsPopulator:可以默认去执行一些特定的子类的方法
package com.licq.template; import java.lang.reflect.Method;import java.lang.reflect.Modifier; public abstract class AbsPopulator { //获取所有的public方法 public final void dataInitialing()throws Exception{ doInit(); Method[] methods = getClass().getMethods(); if(null != methods && methods.length >0){ for(Method m:methods){ //判断是否根据数据初始化 if(isInitDataMethod(m)){ m.invoke(this); } } } } //判断是否是数据初始化方法,基本方法鉴别器 private boolean isInitDataMethod(Method m) { return m.getName().startsWith("init")//是否是init开始 &&Modifier.isPublic(m.getModifiers())//是否是public的 &&Void.TYPE.equals(m.getReturnType())//返回值是否是void &&!m.isVarArgs()//输入参数是否为空 &&!Modifier.isAbstract(m.getModifiers());//方法不能为抽象的 } public abstract void doInit()throws Exception;}然后实现一个子类Populator实现AbsPopulator类:
package com.licq.template; public class Populator extends AbsPopulator { public void initUser() { // TODO Auto-generated method stub System.out.println("----初始用户表信息----"); } public void initPassword() { // TODO Auto-generated method stub System.out.println("-------初始化密码----------"); } public void initJobs() { // TODO Auto-generated method stub System.out.println("----------初始化工作任务--------------"); } @Override public void doInit() throws Exception { // TODO Auto-generated method stub System.out.println("----------初始化开始了--------------"); } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub AbsPopulator ap = new Populator(); ap.dataInitialing(); System.out.println("----------执行完成了--------------"); } }运行结果:
----------初始化开始了------------------初始用户表信息-----------初始化密码--------------------初始化工作任务------------------------执行完成了--------------
AbsPopulator类作为一个模板提供给消费者的话,他的子类可以按照里面声明定义很多自己的方法逻辑,真的很强大。但是代码却是很简练,无需很多重复代码,这也是非常符合我们的OCP原则。
本文的同步更新博客:模板模式的代码实现demo---海派Dubbo
0 0
- 模板模式的代码实现demo
- 模板模式c++代码实现
- 模板设计模式,简单Java代码实现
- 工厂模式的模板实现
- 策略模式的实现的简单Demo
- 自动机系列之一:自动机的模板代码及其demo
- springmvc Backbone实现的一个demo代码
- Android观察者模式的简单实现demo
- Android观察者模式的简单实现demo
- 设计模式----模板方法模式UML和实现代码
- 模板设计模式代码
- 模板设计模式代码
- 枚举类的模板代码-Java实现
- 单件模式的C++模板实现
- 模板实现的通用工厂方法模式
- DLL文件实现窗体的模板模式
- Java 模板方法模式的实现
- java swing实现的多线程实例代码教程-赛马demo
- Could not initialize master info structure; more error messages can be found in the MySQL error log
- NGINX基本模块与配置
- 1066. Root of AVL Tree (25)
- CFormView创建后有时不显示控件
- 2015年2月2日工作日志
- 模板模式的代码实现demo
- 声波通讯的原理
- hdu 1978 简单dp
- 2015.2-2015.3计划
- 玩一下访问地图
- chrome离线提示小恐龙游戏刷分小bug~
- yii2 csrf
- git常用命令总结
- CFNetwork编程指南(中文版)