模板方法(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)抽象考察模板类