posts - 297,  comments - 1618,  trackbacks - 0

    模板方法(Template Method)模式 属于对象的行为模式
1. 定义
    定义一个操作中算法的骨架,将一些步骤执行延迟到其子类中。模板方法模式是基于继承的代码复用的基本技术,该模式的结构和用法也是面向对象设计的核心。
2. 使用的原因
    当一个算法的基本骨架已能确定,但算法的实现部分会根据具体情况有所变动,或为了提高算法实现的灵活性时,可考虑采用模板方法(Template Method)模式。
3. 适用的情况举例
    eg. 你计划了向所喜欢的女孩子表白,你已经想好了当晚表白时要进行的具体步骤,例如第一步打电话约该女生出来,第二步与该女生去一家咖啡厅或附近的某公园表白,第三步.......,但还没想好具体的某些步该怎么样做时,你可以先定义一个抽象的模板,然后请各好友或自己闭关想出一种或多种来实现之;
4. 类图结构及说明
     1)类图结构如下所示:


       2)类说明
            i) AbstractClass:抽象模板类,该类定义了一个或多个抽象操作,以便让子类实现;并且它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象步骤中,推迟到子类实现。
           ii)ConcreteClass:具体模板类,该类实现父类AbstractClass所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤;每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法的不同实现。

5. 使用举例
 
1) 需求:Amigo的老妈大人打算找个女婿,特意为其未来女婿定义需闯的五关,第一关:基本条件,年龄要求:25-30;第二关:考验其是否love她的女儿;第三关:检验其是否老实不花心;第四关:考察其是否尊老爱幼;第五关:观察该人是否勤奋好学有能力。对于来“应聘”的人(也许还有不少,貌似美美地说),对这五关都会有不同的表现方式;
     2)分析:Amigo一瞄,嘿,这倒是个模板方法方式的典型好例哦,选女婿的算法骨架已出来了,就是这五关哈,各个“应聘”者提供了第二到五关的具体实现;
     3)代码参考实现:
          i)抽象考察模板类

public   abstract   class  考察模板  {
    
public   void  选女婿()  {
            第一关();
            第二关();
            第三关();
            第四关();
               第五关();
    }

 
            
         public final void 第一关() {
               //年龄限制:25-30
         }

    
public   abstract   void  第二关();
  
    
public   abstract   void  第三关();

    
public   abstract   void  第四关();
  
    
public   abstract   void  第五关();

}
        ii)考察模板具体实现类,A君过来应聘,经过一段时间的考察,Amigo's mother总结了其实现,具体如下:
     
public class 应聘人1的实现 extends 考察模板 {
    
public void 第二关() {
          
//跟Amigo's mother's daughter出去的时候老看路边美女,汗
        }

  
    
public void 第三关() {
               
//手机短信响不停,全是"亲爱的"
        }


    
public void 第四关() {
              
//坐公交车时不给老人小孩让位子,现在的小伙子啊
       }

  
    
public void 第五关() {
             
//一有空就在家里玩游戏,上班猛聊QQ
        }

}
        真是出师不利啊,一来就是个四不行.....
        路漫漫,继续等待应聘人吧。
        在此也祝愿单身的朋友们早日找到如意的另一半,不要跟我抢着过光棍节!
posted on 2007-03-20 22:38 阿蜜果 阅读(2533) 评论(8)  编辑  收藏 所属分类: Design Pattern


FeedBack:
# re: 设计模式学习笔记--模板方法(Template Method)模式
2007-03-20 23:05 | 阿蜜果
刚修正了个bug,呵呵  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式
2007-03-20 23:09 | ant
有才情的女子,^_^。  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式
2007-03-21 08:58 | Tortoise
讲解的很到位,每次的例子也都是那么的经典,不顶的人,除非头脑有问题
要么就不是这个行业的。  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式
2007-03-21 10:25 | 坏男孩
写的很生动,证明已经理解了其本质  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式 [未登录]
2007-03-21 10:35 | 阿蜜果
to all
呵呵,谢谢各位的关注,继续努力中!  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式
2007-03-21 12:28 | cresposhi
我可不想做头脑有问题的人,so UP ^_^  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式
2007-03-21 16:03 | 铅笔刀
不错!不错.
欣赏了.  回复  更多评论
  
# re: 设计模式学习笔记--模板方法(Template Method)模式
2008-01-08 12:35 | hbyufan@hotmail.com
2007-03-20 23:09 | ant

有才情的女子,^_^。 回复 更多评论
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

      生活将我们磨圆,是为了让我们滚得更远——“圆”来如此。
      我的作品:
      玩转Axure RP  (2015年12月出版)
      

      Power Designer系统分析与建模实战  (2015年7月出版)
      
     Struts2+Hibernate3+Spring2   (2010年5月出版)
     

留言簿(262)

随笔分类

随笔档案

文章分类

相册

关注blog

积分与排名

  • 积分 - 2280247
  • 排名 - 3

最新评论

阅读排行榜

评论排行榜