在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。本文以数据库SQL语法为例来阐述模板模式的应用场景。由于不同的数据库SQL语法存在差异,在替换数据库时需要更改程序大量的SQL语句,而模板模式能够将零散的并且随数据库变化的SQL语句提取出来,提高了软件的可移植性和兼容性,本文依据http://www.w3school.com.cn/sql/sql_top.asp上面给出的语法,设计出了模板模式:

模板方法类:

classdef SQLTemplate < handle
methods(Abstract,Access=protected)
run_top_sql(obj,top_number,table_name);
end
methods
function run_top(obj,top_number,table_name)
try
obj.begin_conn();
obj.begin_tran();
obj.run_top_sql(top_number,table_name);
obj.commit_tran();
catch
obj.rollback_tran();
end
obj.end_conn();
end
function begin_conn(~)
disp('开启数据库连接');
end
function begin_tran(~)
disp('开启事务');
end
function commit_tran(~)
disp('提交事务');
end
function rollback_tran(~)
disp('回滚事务');
end
function end_conn(~)
disp('关闭数据库连接');
end
end
end

具体实现类--MySQL类:

classdef MySQL < SQLTemplate
methods(Access=protected)
function run_top_sql(~,top_number,table_name)
disp(['select * from ',table_name,' limit ',num2str(top_number)]);
end
end
end

具体实现类--Oracle类:

classdef Oracle < SQLTemplate
methods(Access=protected)
function run_top_sql(~,top_number,table_name)
disp(['select * from ',table_name,' where ROWNUM <= ',num2str(top_number)]);
end
end
end

具体实现类--SQLServer类:

classdef SQLServer < SQLTemplate
methods(Access=protected)
function run_top_sql(~,top_number,table_name)
disp(['select top ',num2str(top_number),' * from ',table_name]);
end
end
end

  

Matlab模板模式的更多相关文章

  1. JAVA设计模式之模板模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...

  2. Java设计模式之模板模式(Template )

    前言: 最近学习了Glide开源图片缓存框架,在学习到通过使用ModelLoader自定义数据源的时候,Glide巧妙的使用了Java的模板模式来对外暴露处理不同的Url数据源,今天来学习总结一下模板 ...

  3. Java设计模式(七) 模板模式

    [模板模式]在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 1,定义模板类 package com.pattern ...

  4. 模板模式与策略模式/template模式与strategy模式/行为型模式

    模板模式 模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去 ...

  5. 12. 星际争霸之php设计模式--模板模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  6. 模板模式(C++) 【转】

    模板模式(template)在面向对象系统的设计和开发过程中,一定会有这样的情况:对于一些功能,在不同的对象身上展示不同的作用,但是功能的框架是一样的,这就是模板(template)模式的用武之地,我 ...

  7. Head First 设计模式系列之一----模板模式(java版)

    开篇序言:四人帮的设计模式对于我这个菜鸟看着打瞌睡,后面果断买了一本head first的,感觉还可以像看报纸似的,花了一个寒假的晚上看了大半,确实内容也挺吸引人的,讲的很风趣.否则我也不可能,大过年 ...

  8. 模板模式(Template)

    行为型:Template(模板模式) 作为一个曾经爱好写文章,但是不太懂得写文章的人,我必须承认,开头是个比较难的起步. 模板模式常规定义:模板模式定义了一个算法步骤,把实现延迟到子类. 事实上模板模 ...

  9. Android开发之模板模式初探

    模板模式我认为在Android的开发中是最长用到的,基本是随处可见的,认识该模式,有助于我们对Android的源代码及框架有一个更深层次的认识.那什么是模板模式呢,模板模式就是定义一个基本框架,将当中 ...

随机推荐

  1. Python快速入门教程【转】

    第一章 Python基础知识 1.1 介绍      1.1.1 特点      Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进.      Python ...

  2. grpc使用记录(三)简单异步服务实例

    目录 grpc使用记录(三)简单异步服务实例 1.编写proto文件,定义服务 2.编译proto文件,生成代码 3.编写服务端代码 async_service.cpp async_service2. ...

  3. Qt 组合框QComboBox的定制

    转载:https://www.cnblogs.com/csuftzzk/p/qss_combobox.html 转载:https://www.bbsmax.com/A/E35pLgRK5v/ 转载:h ...

  4. 029_H5打包编译成IOS

    由于需要H5编写的应用在iPhone上使用,所以有了以下的需求 一. (1)下载npm,官网: http://nodejs.org/ 下载nodejs安装包 Reference:https://jin ...

  5. log-structured-merge-trees

    https://juejin.im/post/5bbbf7615188255c59672125 https://www.cnblogs.com/siegfang/archive/2013/01/12/ ...

  6. js代码突然在花括号回车自动多加了一个大括号

    js代码突然在花括号回车自动多加了一个大括号. 检查发现,前面有一个行带有左括号的注释行.

  7. c++ Array运用实例

    myprint.hpp #include <iostream> #include <string> template <typename T> inline voi ...

  8. Indellij IDEA的菜单 File Edit View等主菜单栏不小心删除,恢复的解决办法

    修改以后保存,重启Idea

  9. 查找算法(1)--Sequential search--顺序查找

    1. 顺序查找 (1)说明 顺序查找适合于存储结构为顺序存储或链接存储的线性表.     (2)基本思想 顺序查找也称为线形查找,属于无序查找算法.从数据结构线形表的一端开始,顺序扫描,依次将扫描到的 ...

  10. 大幅度改变celery日志外观,修改成日志可点击跳转和鲜艳五彩日志,解决脚本中已添加handler的logger和框架日志重复记录问题。

    大幅度改变celery日志外观,修改成日志可点击跳转和鲜艳五彩日志,解决脚本中已添加handler的logger和框架日志重复记录问题.打猴子补丁. 先把脚本中的所有logger的handlers全部 ...