/*模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的
* 结构即可重新定义该算法的某些特定步骤.
*
* 我的个人理解就是把一些共同的行为搬到父类,把一些可变的不一样的留到子类中去实现.
*
* 注:模板方法是通过巴布遍的行为搬移到超类,去除子类中的重复代码来体现他的优势.
* 模板方法就是提供了一个很好的代码复用的平台.
* 当不变的和可变的行为在方法的子类实现中混合在一起时候,不变的行为就会在子类中重复出现,我们通过模板方法把这些行为
* 搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠.
*
* 结构即可重新定义该算法的某些特定步骤.
*
* 我的个人理解就是把一些共同的行为搬到父类,把一些可变的不一样的留到子类中去实现.
*
* 注:模板方法是通过巴布遍的行为搬移到超类,去除子类中的重复代码来体现他的优势.
* 模板方法就是提供了一个很好的代码复用的平台.
* 当不变的和可变的行为在方法的子类实现中混合在一起时候,不变的行为就会在子类中重复出现,我们通过模板方法把这些行为
* 搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠.
*
* */
package com.zwy;
public class TemplateMethod {
/**
* main(这里用一句话描述这个方法的作用)
* (这里描述这个方法适用条件 – 可选)
* @param args
*void
* @exception
* @since 1.0.0
*/
public static void main(String[] args) {
BaseTemplate base = new ConcretateTemplate();
base.run();
}
}
class BaseTemplate {
public void run1(){
System.out.println(this.getClass().getName() +"执行run1");
};
public void run2(){
System.out.println(this.getClass().getName() + "执行run2");
}
public void run(){
System.out.println("开始执行模板开头");
this.run1();
System.out.println("模板执行一般了");
this.run2();
System.out.println("模板执行结束了");
}
}
class ConcretateTemplate extends BaseTemplate {
public void run1(){
System.out.println("ConcretateTemplate" +"执行run1");
};
public void run2(){
System.out.println("ConcretateTemplate" + "执行run2");
}
}