模板方法(Template Method): 属行为型模式,最常用,最简便
意图:
定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TempeleteMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
动机: 多种输出模板
适用:
- 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现
- 公共行为在父类,不同之处分离为新的操作
- 控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。 像Rails中ActiveRecord所带的before_save,after_save 就是hook方法。
例子:
这个例子是以魔兽里面英雄(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
例子原文件点击直接下载
类图:
- 大小: 25.4 KB
分享到:
相关推荐
设计模式C++学习之模板方法模式(Template Method)
Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现
C++设计模式课件3_Template Method_模板方法.pdf
模板方法(TemplateMethod) 用意:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
C++设计模式代码资源3_Template Method_模板方法.zip
模板方法模式是一种行为设计模式,它在一个方法中定义算法的骨架,将一些步骤延迟到子类中实现。 具体来说,模板方法模式的关键特点包括: 抽象类:在抽象类中定义一个模板方法,该方法给出了算法的框架。 具体...
主要为大家详细介绍了C++设计模式之模板方法模式TemplateMethod,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了C++设计模式编程中Template Method模板方法模式的运用,讲到了包括模板方法模式中的细分方法以及适用场景,需要的朋友可以参考下
本文实例讲述了Python设计模式之模板方法模式。分享给大家供大家参考,具体如下: 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的...
设计模式——模板方法模式模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用场景:当不变和可...
c++设计模式-行为型模式-模板方法模式;qt工程;c++简单源码; 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重...
C++设计模式笔记(03-02) – Template Method_模板方法(下): https://blog.csdn.net/mofan6930/article/details/104383750 参考书籍:《设计模式:可复用面向对象软件的基础》 参考课程:《C++设计模式》-李建忠 ...
模板方法模式[TEMPLATE METHOD PATTERN] 建造者模式[BUILDER PATTERN] 策略模式 代理模式 单例模式 多例模式 工厂方法模式 抽象工厂模式 门面模式 适配器模式 模板方法模式 建造者模式 桥梁模式 命令模式 装饰模式 ...
5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被...
Template Method.rarTemplate Method.rarTemplate Method.rarTemplate Method.rar模板设计模式
模板方法(Template Method)设计模式中使用了一个类方法templateMethod(), 该方法是抽象类中的一个具体方法, 这个方法的作用是对抽象方法序列排序,具体实现留给具体类来完成.关键在于模板方法模式定义了操作中算法的...
介绍模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某
9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合...
TemplateMethod Pattern.unitypackage是一个模板方法模式的小栗子。