小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

GoF設計模式之二十二 Template- -

 wtf_soft 2005-07-22

 

    C10) Template(模板模式)
    定義:定義一個操作的算法的框架,將一些步驟的實現(xiàn)推遲到子類。模板模式在不改變算法結構的前提下,允許子類重定義算法的某些步驟。
    模板模式非常好的利用了繼承重載的特性,先給出操作要實現(xiàn)的步驟大綱,暫緩某些步驟的實現(xiàn),把這部分交由不同的子類來完成。這個模式就像平時常做的填寫表格,表格就是模板,每張?zhí)顚懞玫谋砀穸际沁@個模板的一個子類。
    現(xiàn)在假設要實現(xiàn)一個數(shù)據(jù)復制的功能,我們將這個功能分為幾個步驟:1)打開數(shù)據(jù)源和目標 3)讀取數(shù)據(jù) 4)數(shù)據(jù)格式化 5)寫入數(shù)據(jù) 6)關閉,生成模板類如下
    public abstract class CopyTemplate {
        public abstract void open();
        public abstract void getData();
        public abstract void formatData();
        public abstract void putData();
        public abstract void close();
        public void doCopy() {
            open();
            getData();
            formatData();
            putData();
            close();
        }
    }

    接下來,需要實現(xiàn)一個從數(shù)據(jù)庫復制到文件的功能
    public class DB2File extends CopyTemplate {
        public void open() {
            //建立數(shù)據(jù)庫連接
            //創(chuàng)建文件訪問對象
        }
        public void getData() {
            //查詢操作,取得ResultSet
        }
        public void formatData() {
            //格式化數(shù)據(jù)
        }
        public void putData() {
            //寫文件
        }
        public void close() {
            //關閉數(shù)據(jù)庫連接
            //關閉文件訪問對象
        }
    }

    如果需要文件向數(shù)據(jù)庫復制
    public class File2DB extends CopyTemplate {
        public void open() {
            //建立數(shù)據(jù)庫連接
            //創(chuàng)建文件訪問對象
        }
        public void getData() {
            //讀文件
        }
        public void formatData() {
            //格式化數(shù)據(jù)
        }
        public void putData() {
            //生成InsertQuery并執(zhí)行
        }
        public void close() {
            //關閉數(shù)據(jù)庫連接
            //關閉文件訪問對象
        }
    }

    調用的時候
    CopyTemplate action1 = new DB2File();
    action1.doCopy();
    CopyTemplate action2 = new File2DB();
    action2.doCopy();

    上面模板用到了抽象類,主要是為了強制子類實現(xiàn)。對于doCopy()方法,可以加上final關鍵字聲明,這樣子類就無法重載了。
 

   參考:
1、 http://www./designpatterns/template.htm(中文、java實例)
2、 http://www./Patterns/PatternCommand.aspx(英文、C#實例、UML)
3、 http://www.caterpillar./PmWiki/pmwiki.php/DesignPattern/TemplateMethod(中文、java實例、UML)推薦
4、 http://www./tech/DesignPattern/TemplateMethod.html(日文、java實例、UML)推薦

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多