打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GoF设计模式之二十二 Template- -

 

    C10) Template(模板模式)
    定义:定义一个操作的算法的框架,将一些步骤的实现推迟到子类。模板模式在不改变算法结构的前提下,允许子类重定义算法的某些步骤。
    模板模式非常好的利用了继承重载的特性,先给出操作要实现的步骤大纲,暂缓某些步骤的实现,把这部分交由不同的子类来完成。这个模式就像平时常做的填写表格,表格就是模板,每张填写好的表格都是这个模板的一个子类。
    现在假设要实现一个数据复制的功能,我们将这个功能分为几个步骤:1)打开数据源和目标 3)读取数据 4)数据格式化 5)写入数据 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();
        }
    }

    接下来,需要实现一个从数据库复制到文件的功能
    public class DB2File extends CopyTemplate {
        public void open() {
            //建立数据库连接
            //创建文件访问对象
        }
        public void getData() {
            //查询操作,取得ResultSet
        }
        public void formatData() {
            //格式化数据
        }
        public void putData() {
            //写文件
        }
        public void close() {
            //关闭数据库连接
            //关闭文件访问对象
        }
    }

    如果需要文件向数据库复制
    public class File2DB extends CopyTemplate {
        public void open() {
            //建立数据库连接
            //创建文件访问对象
        }
        public void getData() {
            //读文件
        }
        public void formatData() {
            //格式化数据
        }
        public void putData() {
            //生成InsertQuery并执行
        }
        public void close() {
            //关闭数据库连接
            //关闭文件访问对象
        }
    }

    调用的时候
    CopyTemplate action1 = new DB2File();
    action1.doCopy();
    CopyTemplate action2 = new File2DB();
    action2.doCopy();

    上面模板用到了抽象类,主要是为了强制子类实现。对于doCopy()方法,可以加上final关键字声明,这样子类就无法重载了。
 

   参考:
1、 http://www.jdon.com/designpatterns/template.htm(中文、java实例)
2、 http://www.dofactory.com/Patterns/PatternCommand.aspx(英文、C#实例、UML)
3、 http://www.caterpillar.onlyfun.net/PmWiki/pmwiki.php/DesignPattern/TemplateMethod(中文、java实例、UML)推荐
4、 http://www.techscore.com/tech/DesignPattern/TemplateMethod.html(日文、java实例、UML)推荐

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
模板方法模式(Template Method Pattern)
模板模式(template)解析例子
《Head First设计模式》阅读笔记.第八章
设计模式(14) 模板方法模式
Template method pattern 模板方法模式
委托和设计模式(2)(下)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服