梦幻之旅
DEBUG - 天道酬勤
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
<
2011年8月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
公告
本博客中未注原创的文章均为转载,对转载内容可能做了些修改和增加图片注释,如果侵犯了您的版权,或没有注明原作者,请谅解
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
(644)
Android(10)
(rss)
ANT(4)
(rss)
C#(10)
(rss)
C/C++(16)
(rss)
CSS(3)
(rss)
DataBase(119)
(rss)
DB-DailyMmaintenance(16)
(rss)
Design Patterns(27)
(rss)
english
(rss)
Exceptions(7)
(rss)
EXT(39)
(rss)
FLASH(9)
(rss)
Hardware(20)
(rss)
Hibernate(13)
(rss)
Html(23)
(rss)
Java(143)
(rss)
java Net(10)
(rss)
JavaScript(39)
(rss)
Linux(26)
(rss)
php(5)
(rss)
Regular Exp(3)
(rss)
Spring(17)
(rss)
Struts(12)
(rss)
TOOL(43)
(rss)
VB/VBA/VBS(5)
(rss)
webservice(9)
(rss)
XML(2)
(rss)
我的梦幻旅途(14)
(rss)
随笔档案
(669)
2017年9月 (4)
2016年10月 (1)
2015年6月 (1)
2015年4月 (2)
2015年1月 (1)
2014年8月 (2)
2014年7月 (9)
2014年6月 (1)
2014年5月 (2)
2014年4月 (3)
2014年3月 (3)
2013年10月 (4)
2013年9月 (8)
2013年8月 (4)
2013年6月 (3)
2013年5月 (4)
2013年4月 (7)
2013年3月 (1)
2013年1月 (3)
2012年12月 (4)
2012年11月 (1)
2012年10月 (1)
2012年9月 (4)
2012年8月 (1)
2012年7月 (2)
2012年6月 (1)
2012年5月 (4)
2012年4月 (2)
2012年3月 (1)
2012年2月 (4)
2012年1月 (6)
2011年12月 (10)
2011年11月 (7)
2011年10月 (6)
2011年9月 (37)
2011年8月 (34)
2011年7月 (44)
2011年6月 (10)
2011年5月 (5)
2011年4月 (3)
2011年3月 (1)
2011年2月 (1)
2011年1月 (18)
2010年12月 (9)
2010年11月 (13)
2010年10月 (17)
2010年9月 (2)
2010年8月 (10)
2010年7月 (10)
2010年6月 (5)
2010年5月 (8)
2010年4月 (9)
2010年3月 (11)
2010年2月 (3)
2010年1月 (8)
2009年12月 (6)
2009年11月 (10)
2009年10月 (5)
2009年9月 (1)
2009年8月 (18)
2009年7月 (6)
2009年6月 (2)
2009年5月 (1)
2009年4月 (4)
2009年3月 (6)
2009年2月 (5)
2009年1月 (3)
2008年12月 (13)
2008年11月 (13)
2008年10月 (30)
2008年9月 (9)
2008年8月 (24)
2008年7月 (17)
2008年6月 (15)
2008年5月 (16)
2008年4月 (15)
2008年3月 (19)
2008年2月 (3)
2008年1月 (20)
2007年12月 (24)
2007年11月 (9)
文章档案
(6)
2008年4月 (1)
2008年3月 (1)
2008年1月 (2)
2007年11月 (2)
最新随笔
1. PP代码生成器(四) 使用解决方案生成代码
2. PP代码生成器(三) 设计freemarker模板, 创建解决方案
3. PP代码生成器(二) 解决方案, 生成任务, 辅助设计面板
4. PP代码生成器(一) 简介, 下载, 运行
5. PP持久层代码生成器
6. 比较好的博客
7. 系统集成项目管理工程师
8. 软件公司项目经理岗位职责
9. 联想笔记本 显示屏 键盘失灵 释放静电
10. eclipse maven
积分与排名
积分 - 954017
排名 - 37
最新评论
1. re: Myeclipse 快捷键大全(绝对全)
crl+向右箭头(输入法有问题打不出来)移到下一个参数的位置,然后crl+shift+向右箭头 选中该位置的参数即可
--红领巾
2. re: Log4j基本使用方法
555
--555
3. re: Myeclipse 快捷键大全(绝对全)[未登录]
很不错,谢谢
--银狐
4. re: Flex 表单
是谁这么无聊~呜~~~
--HUIKK
5. re: Spring AfterReturning 异常
具体是什么意思啊
--dingli
阅读排行榜
1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream(70015)
2. log4j.properties 使用说明(42070)
3. Myeclipse 快捷键大全(绝对全)(32711)
4. TNSNAMES.ORA 配置(24380)
5. oracle 树状查询(21351)
评论排行榜
1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream(53)
2. JMail 异常: java.lang.NoClassDefFoundError: javax/activation/DataSource(21)
3. javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first(14)
4. java 读取 excel 2003 或 excel 2007(14)
5. java.lang.UnsupportedClassVersionError: Bad version number in .class file(8)
[原创]设计模型探索P-template method parttern之死模活样
模板方法
定义一个操作算法的骨架,而将一些步骤沿迟到子类中去实现,模板方法使了类可能不改变算法的结构即可以重定义该算法的某一些特定步骤.
组成部份
1.抽象模板 是一个抽象类,包含一系列的算法和一个模板方法,模板方法需要加final来修饰.
2.具体模板 继承自抽象类.
各组成部份之间的关系
适用场景:
设计者需要给出一个算法的固定步骤,并将某一些步骤的具体实现留给子类来实现.
需要对代码进行重构,将各个子类的公共行为取出来放到一个共同的父亲类中以避免代码重复
例子:
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:[加载驱动]</li>
* <li>Created by [Huyvanpull] [2011-8-2]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public
abstract
void
loadDrive();
/** */
/**
* <ul>
* <li>Description:[连接数据库]</li>
* <li>Created by [Huyvanpull] [2011-8-2]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public
abstract
void
connectDataBase();
/** */
/**
* <ul>
* <li>Description:[创建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:[执行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:[关闭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:[关闭连接]</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:[执行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)
{
//
加载驱动
this
.loadDrive();
//
连接数据库
this
.connectDataBase();
//
创建statement
this
.createStatement();
//
执行sql
this
.executeSQL(sql);
//
关闭statement
this
.closeStatement();
//
关系连接
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 关闭连接
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#closeStatement()
*/
public
void
closeStatement()
{
//
TODO Auto-generated method stub
System.out.println(
"
oracle 关闭statement
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#connectDataBase()
*/
public
void
connectDataBase()
{
//
TODO Auto-generated method stub
System.out.println(
"
oracle 连接数据库
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#createStatement()
*/
public
void
createStatement()
{
//
TODO Auto-generated method stub
System.out.println(
"
oracle 创建statement
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#executeSQL()
*/
public
void
executeSQL(String sql)
{
//
TODO Auto-generated method stub
System.out.println(
"
oracle 执行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 加载驱动
"
);
}
}
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 关闭连接
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#closeStatement()
*/
public
void
closeStatement()
{
//
TODO Auto-generated method stub
System.out.println(
"
DB2 关闭statement
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#connectDataBase()
*/
public
void
connectDataBase()
{
//
TODO Auto-generated method stub
System.out.println(
"
DB2 连接数据库
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#createStatement()
*/
public
void
createStatement()
{
//
TODO Auto-generated method stub
System.out.println(
"
DB2 创建statement
"
);
}
/**/
/*
* (non-Javadoc)
*
* @see template.DatabaseExecuteTemplate#executeSQL()
*/
public
void
executeSQL(String sql)
{
//
TODO Auto-generated method stub
System.out.println(
"
DB2 执行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 加载驱动
"
);
}
}
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
阅读(383)
评论(0)
编辑
收藏
所属分类:
Design Patterns
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
[原创]设计模型探索S-GoF,设计模式的分类
[原创]设计模型探索R-mediator parttern之月下老人
[原创]设计模型探索Q-bridge parttern之桥归桥路归路
[原创]设计模型探索P-template method parttern之死模活样
[原创]设计模型探索O2-proxy parttern之桃代李疆
[原创]设计模型探索O1-proxy parttern之桃代李疆
[原创]设计模型探索N -flyweight parttern之有福同享
[原创]设计模型探索M-state parttern之各有千秋
[原创]设计模型探索L-composite parttern之玉树临风
[原创]设计模型探索K-builder parttern之各施其职
Powered by:
BlogJava
Copyright © HUIKK