设计模式---模板方法模式
来源:互联网 发布:快手早餐 知乎 编辑:程序博客网 时间:2024/06/07 08:16
今天中午学习了一下模板方法模式,这种模式应用很广泛,做过servlet开发的兄弟都知道自己需要继承HttpServlet抽象类,然后自己实现doGet(),doPost()方法。做过一些基于国外的一些web框架开发的兄弟应该知道,一般一个页面都需要一个后台保存的类,这个类都需要自己继承某个抽象类,然后实现其中特定的方法,这个方法有一些参数,主要是页面传来的参数等,在华为干过的肯定都知道,那边的开发都是基于某框架,然后自己写页面,后来保存更新等功能自己继承某个类,实现特定方法,等等等等。。。这些其实都是模板方法设计模式的作用。
这种设计模式比较好的作用我个人发觉有一个,是这样的,将系统框架的实现者和具体业务的开发者分离开,就是说你做框架的就做框架,留好接口就行,业务系统开发的就安心做业务系统的开发,至于系统的性能啊,ORM映射啊什么的,你就别管了。罪恶啊,有一些刚学会开发的兄弟,,就这样开发下去,,好久以后还不知道这个框架是个什么原理,,苦于一直做民工...唉.....
好了,来说说这种模式。这种模式,主要是有一个抽象类来组成,该抽象类一个主要的作用就是将不变化的逻辑实现出来,将业务方面的逻辑用抽象方法来表示,然后在不变的逻辑里面来调用抽象方法,该抽象方法会被子类继承实现。。多高明。。。。
举个例子。
基类将不变的逻辑实现在execute()方法中
package com.dev.design.templatemethod;import java.util.ArrayList;import java.util.List;public abstract class AbstractProcessor {public final void execute(){List<String> list = new ArrayList<String>();System.out.println("begin to execute execute().....");run(list);System.out.println("end to execute execute().....");System.out.println(list.size());}protected abstract void run(List<String> list);}
其中run()方法就是要处理业务逻辑的方法,业务逻辑经常变化,因此就是一个抽象的方法,由各个继承者实现就好了。
package com.dev.design.templatemethod;import java.util.List;public class DefaultProcessor extends AbstractProcessor {@Overrideprotected void run(List<String> list) {// TODO Auto-generated method stubSystem.out.println("begin running.....");list.add("haha");list.add("hehe");System.out.println("end running.......");}}
看看测试类:
package com.dev.design.templatemethod;public class Main {public static void main(String[] args) {AbstractProcessor processor = new DefaultProcessor();processor.execute();}}测试结果如下:
begin to execute execute().....
begin running.....
end running.......
end to execute execute().....
2
针对其他类似的业务,我们同样实现AbstractProcessor类的run()方法就好了。一般在web框架中如何调用到具体的实现类?其实框架中会做出一个配置文件,针对特定的url的字符,来查找特定的processor。然后业务开发人员就安心的苦力写代码,按照配置文件的要求来做配置即可....
脑力劳动就和体力劳动,,这样分开了.......
- 设计模式:模板方法模式
- 设计模式 - 模板方法模式
- 设计模式:模板方法模式
- 设计模式 模板方法模式
- 设计模式--模板方法模式
- 设计模式-【模板方法模式】
- 设计模式: 模板方法模式
- 设计模式- 模板方法模式
- 设计模式 - 模板方法模式
- 设计模式 - 模板方法模式
- 设计模式-模板方法模式
- 设计模式-模板方法模式
- 设计模式---模板方法模式
- 设计模式-模板方法模式
- 设计模式--模板方法模式
- 设计模式-模板方法模式
- 设计模式------模板方法模式
- 设计模式----模板方法模式
- 第三方苹果开发库之ASIHTTPRequest(翻译版)
- 计算机高级语言与低级语言的区别
- 【AIX】采用vi语法编辑命令行
- 工作规划-2013.07.30
- Xcode隐藏功能
- 设计模式---模板方法模式
- Struts2 Spring hibernate 整合示例 .
- Hibernate与 MyBatis的比较
- 菜园四周种了n棵白菜,并按顺时针方向由1到n 编号,收割时,从编号1开始,按顺时针方向每隔两棵白菜收割一棵,直到全部收割完毕为止.按收割顺序列出白菜编号
- Mysql存储过程(六)——存储过程中使用临时表
- MFC指针的获取
- org.springframework.orm.hibernate3.HibernateQueryException 问题
- sql获取第某行开始的第n条数据
- 【7gyy】教你解决来自MicrosoftGroove程序中DLL的劫持隐患