zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    用java在mysql中随机插入9000 000条数据
    java连接mysql的一个小例子
    JDK环境变量配置
    JVM工作原理
    线程和进程的区别
    java实现链表
    内连接、外连接、左连接、右连接
    udp协议
    要看的东西
    eclipse快捷键
  • 原文地址:https://www.cnblogs.com/usaddew/p/10906194.html
Copyright © 2011-2022 走看看