模板方法模式
来源:互联网 发布:金蝶软件服务商 编辑:程序博客网 时间:2024/06/06 14:45
1.概述
模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。
2.代码实现
使用过Servlet的人都清楚,除了要在web.xml做相应的配置外,还需继承一个叫HttpServlet的抽象类。HttpService类提供了一个service()方法,这个方法调用七个do方法中的一个或几个,完成对客户端调用的响应。这些do方法需要由HttpServlet的具体子类提供,因此这是典型的模板方法模式。
// 模拟request请求类class HttpServletRequest { String method; public String getMethod() { return method; } public void setMethod(String method) { this.method = method; }}
//response类class HttpServletResponse {}
// 模拟HttpServlet类abstract class HttpServlet { //模板service 方法, protected void service(HttpServletRequest req, HttpServletResponse resp) { //其它逻辑 if (req.getMethod().equals("GET")) { doGet(req, resp); } else if (req.getMethod().equals("POST")) { doPost(req, resp); } //其它逻辑 } public abstract void doGet(HttpServletRequest req, HttpServletResponse resp); public abstract void doPost(HttpServletRequest req, HttpServletResponse resp);}
// 自定义的servlet类class MyServlet extends HttpServlet{ @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) { // TODO Auto-generated method stub System.out.println("MyServlet->doGet() method:" + req.getMethod()); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) { // TODO Auto-generated method stub System.out.println("MyServlet->doPost() method:" + req.getMethod()); }}
//--------------main测试------------------ public static void main(String[] args) { HttpServlet servlet = new MyServlet(); HttpServletRequest request = new HttpServletRequest(); // 模拟post请求 request.setMethod("POST"); // 执行 service servlet.service(request, new HttpServletResponse()); // 模拟get请求 request.setMethod("GET"); // 执行 service servlet.service(request, new HttpServletResponse()); }执行结果:MyServlet->doPost() method:POSTMyServlet->doGet() method:GET
HttpServlet 中 的service规定了一套执行模板(方法的执行),子类 只需实现自己的具体不同的实现方法便可。
老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400
阅读全文
0 0
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 关于U盘安装CentOS 7(CentOS-7-x86_64-DVD-1708.iso)的流程以及安装过程中的一些问题
- 服务器后台运行的优势和方法
- 网络编程(一)
- HDU1021
- Lock和synchronized的区别和使用
- 模板方法模式
- 如何从零设计结构清晰、操作友好的权限管理模块
- Spring 配置文件头部xmls解析
- android侧滑菜单
- [LeetCode] 26.Remove Duplicates from Sorted Array
- java设计模式之责任
- 学习记录5
- 最短路径详解
- 网络编程(二)