<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
    主站蜘蛛池模板: 拔擦拔擦8x华人免费久久| 亚洲成人黄色在线| 免费观看的毛片手机视频| 99视频在线免费看| 最新欧洲大片免费在线| 国产大片51精品免费观看| 久久影院亚洲一区| 亚洲天堂男人天堂| 亚洲综合激情五月色一区| 免费国产草莓视频在线观看黄| 中文字幕乱码系列免费| **一级一级毛片免费观看| 午夜免费福利影院| 国产亚洲精品免费视频播放| 精品亚洲成AV人在线观看| 67pao强力打造67194在线午夜亚洲| 亚洲国产成a人v在线观看| 亚洲一区二区三区亚瑟| 亚洲宅男天堂a在线| 亚洲AV香蕉一区区二区三区| 和老外3p爽粗大免费视频 | 色噜噜亚洲精品中文字幕| 亚洲成人在线网站| 亚洲乱码av中文一区二区| aaa毛片免费观看| 免费在线看v网址| 中文字幕无码不卡免费视频| 亚洲黄黄黄网站在线观看| 亚洲视频一区调教| 日日摸日日碰夜夜爽亚洲| 久久大香伊焦在人线免费| 青青草国产免费久久久91| 亚洲精品V欧洲精品V日韩精品| 亚洲AV无码乱码麻豆精品国产| 丁香六月婷婷精品免费观看| 1000部夫妻午夜免费| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲午夜久久久久久尤物| 黄色视频在线免费观看| 成年女人午夜毛片免费看| 免费又黄又硬又爽大片|