自己的理解:
模板模式的任务不在是创建而是规定了做某件事的规则或者说步骤.
/**
*
- @author dch
*/
//定义人的抽象类
public abstract class Person {
//抽象类里面可以有抽象方法
//也可以有普通方法
//当继承抽象类时,抽象方法都实现
//因此模板模式通过抽象方法定义一套规则
public void gotoSchool(){
//1.起床
getUp();
//2.吃早餐
eat();
//3.带上东西
takeThing();
}
public abstract void getUp();
public abstract void eat();
public abstract void takeThing();
//这里说明抽象类中普通方法可以调用抽象类中的抽象方法
}
/**
*
- @author dch
*/
//定义一个学生类去继承Person类
public class Student extends Person {
@Override
public void getUp() {
// TODO Auto-generated method stub
System.out.println("学生7点半起床");
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("学生吃包子,喝豆浆");
}
@Override
public void takeThing() {
// TODO Auto-generated method stub
System.out.println("学生带上书包");
}
}
/**
*
- @author dch
*/
//定义一个老师类来继承Person类
public class Teacher extends Person{
@Override
public void getUp() {
// TODO Auto-generated method stub
System.out.println("老师7点20 起床");
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("老师吃了一碗热干面");
}
@Override
public void takeThing() {
// TODO Auto-generated method stub
System.out.println("老师带上教课书");
}
}
测试类:
/**
*
- @author dch
*/
//测试类
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person stuPerson = new Student();
stuPerson.gotoSchool();
Person teapPerson = new Teacher();
teapPerson.gotoSchool();
}
/*
* 模板模式:
* 这里不在是,像工厂模式去创建对象了
* 这里是规定做某件事的一个流程,大家的流程是一样的,
* 但是每个人具体的做法却不一样,就比如这里,
* 去学校这件事,是老师和学生都要做的
* 模板模式就规定了3个步骤,起床,吃饭,带东西.
* 只是老师和学生对着3个步骤的具体做法不同.
*
*/
}