<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    模板方法
        定義一個操作算法的骨架,而將一些步驟沿遲到子類中去實(shí)現(xiàn),模板方法使了類可能不改變算法的結(jié)構(gòu)即可以重定義該算法的某一些特定步驟.
    組成部份
       1.抽象模板 是一個抽象類,包含一系列的算法和一個模板方法,模板方法需要加final來修飾.
       2.具體模板 繼承自抽象類.
    各組成部份之間的關(guān)系

    適用場景:
    設(shè)計者需要給出一個算法的固定步驟,并將某一些步驟的具體實(shí)現(xiàn)留給子類來實(shí)現(xiàn).
    需要對代碼進(jìn)行重構(gòu),將各個子類的公共行為取出來放到一個共同的父親類中以避免代碼重復(fù)

    例子:
    1.抽象模板
    package template;

    /**
     * <ul>
     * <li>Title:[AbstractTemplate]</li>
     * <li>Description: [抽象模板]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public abstract class DatabaseExecuteTemplate
    {   
        
    /**
         * <ul>
         * <li>Description:[加載驅(qū)動]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void loadDrive();
        
        
    /**
         * <ul>
         * <li>Description:[連接數(shù)據(jù)庫]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void connectDataBase();
        
        
    /**
         * <ul>
         * <li>Description:[創(chuàng)建statement]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void createStatement();
        
        
    /**
         * <ul>
         * <li>Description:[執(zhí)行sql]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void executeSQL(String sql);
        
        
    /**
         * <ul>
         * <li>Description:[關(guān)閉statement]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void closeStatement();
        
        
    /**
         * <ul>
         * <li>Description:[關(guān)閉連接]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void closeConnect();
        
        
    /**
         * <ul>
         * <li>Description:[是否刷新勾子]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
    @return
         
    */

        
    public abstract boolean isFresh();
        
        
    /**
         * <ul>
         * <li>Description:[刷新]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
    @return
         
    */

        
    public abstract void fresh();
        
        
    /**
         * <ul>
         * <li>Description:[執(zhí)行sql]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
    @param sql
         
    */

        
    public final void exceute(String sql)
        
    {
            
    // 加載驅(qū)動
            this.loadDrive();
            
            
    // 連接數(shù)據(jù)庫
            this.connectDataBase();
            
            
    // 創(chuàng)建statement
            this.createStatement();
            
            
    // 執(zhí)行sql
            this.executeSQL(sql);
            
            
    //關(guān)閉statement
            this.closeStatement();
            
            
    // 關(guān)系連接
            this.closeConnect();
            
            
    // 使用勾子改變算法
            if(isFresh())
            
    {
                
    // 刷新操作
                this.fresh();
            }

        }

    }


    2.具體模板1
    package template;

    /**
     * <ul>
     * <li>Title:[OracleExecuteTemple]</li>
     * <li>Description: [oracle模板]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public class OracleExecuteTemple extends DatabaseExecuteTemplate
    {
        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#closeConnect()
         
    */

        
    public void closeConnect()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("oracle 關(guān)閉連接");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#closeStatement()
         
    */

        
    public void closeStatement()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("oracle 關(guān)閉statement");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#connectDataBase()
         
    */

        
    public void connectDataBase()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("oracle 連接數(shù)據(jù)庫");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#createStatement()
         
    */

        
    public void createStatement()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("oracle 創(chuàng)建statement");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#executeSQL()
         
    */

        
    public void executeSQL(String sql)
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("oracle 執(zhí)行SQL: " + sql);
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#fresh()
         
    */

        
    public void fresh()
        
    {
            System.out.println(
    "oracle 刷新");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#isFresh()
         
    */

        
    public boolean isFresh()
        
    {
            
            
    return false;
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#loadDrive()
         
    */

        
    public void loadDrive()
        
    {
            System.out.println(
    "oracle 加載驅(qū)動");
        }

        
    }


    3.具體模板2
    package template;

    /**
     * <ul>
     * <li>Title:[DB2ExecuteTemple]</li>
     * <li>Description: [DB2模板]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public class DB2ExecuteTemple extends DatabaseExecuteTemplate
    {
        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#closeConnect()
         
    */

        
    public void closeConnect()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("DB2 關(guān)閉連接");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#closeStatement()
         
    */

        
    public void closeStatement()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("DB2 關(guān)閉statement");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#connectDataBase()
         
    */

        
    public void connectDataBase()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("DB2 連接數(shù)據(jù)庫");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#createStatement()
         
    */

        
    public void createStatement()
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("DB2 創(chuàng)建statement");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#executeSQL()
         
    */

        
    public void executeSQL(String sql)
        
    {
            
    // TODO Auto-generated method stub
            System.out.println("DB2 執(zhí)行SQL: " + sql);
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#fresh()
         
    */

        
    public void fresh()
        
    {
            System.out.println(
    "DB2 刷新");
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#isFresh()
         
    */

        
    public boolean isFresh()
        
    {
            
    return true;
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see template.DatabaseExecuteTemplate#loadDrive()
         
    */

        
    public void loadDrive()
        
    {
            System.out.println(
    "DB2 加載驅(qū)動");
        }

        
    }


    4.測試類
    package template;

    public class Test
    {   
        
    public static void main(String[] args)
        
    {
            DatabaseExecuteTemplate db2 
    = new DB2ExecuteTemple();
            db2.exceute(
    "select count(*) from users");
            
            OracleExecuteTemple oracle 
    = new OracleExecuteTemple();
            oracle.exceute(
    "select count(*) from users");
        }

    }

    posted on 2011-08-02 17:28 HUIKK 閱讀(387) 評論(0)  編輯  收藏 所屬分類: Design Patterns
    主站蜘蛛池模板: 动漫黄网站免费永久在线观看 | 免费无码黄动漫在线观看| 日本免费网址大全在线观看| 日本最新免费不卡二区在线| 亚洲阿v天堂在线| 亚洲AV福利天堂一区二区三| 亚洲中文字幕无码久久2020 | 一进一出60分钟免费视频| 国产精成人品日日拍夜夜免费| 大陆一级毛片免费视频观看 | 免费日本一区二区| 免费人成年激情视频在线观看| 亚洲国产精品久久久久网站 | 免费v片在线观看无遮挡| 黄色三级三级三级免费看| 69成人免费视频| 亚洲国产第一站精品蜜芽| 午夜视频在线免费观看| 亚洲色婷婷综合开心网| 亚洲A∨精品一区二区三区下载| 最近中文字幕免费mv在线视频| 中国亚洲女人69内射少妇| 亚洲欧美日韩中文二区| 日韩免费精品视频| 亚洲jizzjizz少妇| 暖暖免费高清日本中文| 一级美国片免费看| 亚洲卡一卡2卡三卡4卡无卡三| 国产免费的野战视频| 亚洲国产精品精华液| 亚洲免费无码在线| 国产免费人成视频在线播放播| 日美韩电影免费看| 国产精品综合专区中文字幕免费播放 | 亚洲精品中文字幕无码AV| 成人精品一区二区三区不卡免费看| 四只虎免费永久观看| 亚洲av日韩精品久久久久久a| JLZZJLZZ亚洲乱熟无码| 精品免费久久久久久久| 亚洲一区无码中文字幕乱码|