浏览 1429 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-01
最后修改:2010-01-13
意图: 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TempeleteMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 动机: 多种输出模板 适用:
例子: 这个例子是以魔兽里面英雄(Hero)为父类,以大法(Dafa),牛头(Niutou)为子类,用模板方法来模拟"升级"这个算法. class Hero attr_accessor :max_blood, :max_qi, :level attr_accessor :blood, :qi def initialize default_max_values @blood = max_blood * 1 #默认血为100% @qi = max_qi * 1 #默认蓝为100% @level = 1 end def upgrade @level += 1 up_max_blood up_max_qi p "level:#{level}", "max_b:#{max_blood}", "max_q:#{max_qi}" end def up_max_blood @max_blood *= 1.01 end def up_max_qi @max_qi *= 1.005 end def default_max_values @max_blood = 500.0 @max_qi = 150.0 end end class Niutou < Hero def up_max_blood @max_blood *= 1.01 end def up_max_qi @max_qi *= 1.005 end def default_max_values @max_blood = 700.0 @max_qi = 100.0 end end class Dafa < Hero def up_max_blood @max_blood *= 1.005 end def up_max_qi @max_qi *= 1.02 end def default_max_values @max_blood = 400.0 @max_qi = 200.0 end end df = Dafa.new df.upgrade nt = Niutou.new nt.upgrade 例子原文件点击直接下载 类图: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |