和时间赛跑
我要追上时间
和时间赛跑的人!
我的首页
文章
相册
圈子
留言
管理
 
    当前所在页面:首页>>文章>> Template模式
Template模式
    作者:erikchang 来源: 发表时间:2007-12-06

 
 

     Template模式就是在父类中定义一个操作中的骨架算法,而将一些用户自定义的逻辑延迟到子类中,这里以一个示例来说明,假如所有的business方法中都必须要进行用户验证(validateUser)、异常捕获、进行一个业务操作,那么我们就给用户验证、异常捕获封装到父类中,子类中只需要写一些business代码就可以了,父类代码如下:   

public abstract class BusinessTemplate {
    
public void execute() throws Exception {
        validateUser();
        
try {
         business();
         doBusiness();
        }
 catch (Error e) {
            e.printStackTrace();
        }

    }

    
void validateUser() {
        System.out.println(
"验证用户...");
    }
;
    
void business(){
        System.out.println(
"业务1");
    }

    
public abstract void doBusiness();
}

这里是一个抽象类,有个execute()方法,在这个方法中进行了用户验证、异常捕获和一个业务执行,在这3项任务结束后执行了doBusiness()方法,同时doBusiness()方法又是一个抽象方法,继承该抽象类就要重写这个抽象方法,在这里定义用户自己的业务,写一个子类如下:   

public class Business extends BusinessTemplate {
public void doBusiness() {
         System.out.println(
"自定义的业务");
    }

}
这里继承类就重写了doBusiness方法,这里定义一个用户自己的业务,接着写一个测试类如下:
package spring.chapter4.template;
public class TestTemplate {
    
public static void main(String[] args) throws Exception {
        Business business 
= new Business();
        business.execute();
    }

}
这里的Business类调用了父类的execute方法,也就说按execute()方法的执行顺序来执行,运行结果如下:
   验证用户...
业务1
自定义的业务
这里Business类是BusinessTemplate的一个子类,原本也需要写用户验证、异常捕获等业务,而采用了一个父类模板就给所有的业务都省略了,其他任何需要进行用户验证、异常捕获、业务一这些操作的逻辑都只需要继承BusinessTemplate然后只需要写用户的逻辑代码就可以了,再也不用重复写那些重复的逻辑了,Spring中正是采用了这样的方法来封装了数据库操作的ConnectionStatement这些连接、关闭以及异常捕获等。

 

 

 
 

(阅读 )   评论数(:2)
评论】 【收藏】
评论:共2条
父类代码如下: 代码没有显示出来,是编辑器的问题? 我们上周也在跟大家讨论EasyJWeb中的模板模式的应用,AbstractCrudAction中的很多方法中都是这个模式。
评论人: 大峡     评论时间: 2007-12-06 16:46:37
博客访问速度太慢了,还有就是后台的FCK相当不要用!
评论人: erikchang    评论时间: 2007-12-06 19:36:29

发表评论:
发表人:
评论: 
    
 
关于我们 | 诚聘英才 | 联系我们 | 广告业务 | 网站地图 | 法律声明

EasyJF开源团队版权所有  建议使用1024*768分辨率