Matlab模板模式

在模板模式(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

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值