publicclassTemplateMethodPattern{publicstaticvoidmain(String[]args){Personstu=newStudent();Persontec=newTeacher();stu.TemplateMethod();System.out.println("==========");tec.TemplateMethod();}}abstractclassPerson{publicvoidTemplateMethod(){System.out.println("go to class");PrimitiveOperation1();System.out.println("End of class");PrimitiveOperation2();}publicabstractvoidPrimitiveOperation1();// 原语操作1:上课:学生:听课;老师:讲课publicabstractvoidPrimitiveOperation2();// 原语操作2:作业:学生:做作业;老师:改作业}classStudentextendsPerson{@OverridepublicvoidPrimitiveOperation1(){System.out.println("Listen");}publicvoidPrimitiveOperation2(){System.out.println("Do assignments");}}classTeacherextendsPerson{@OverridepublicvoidPrimitiveOperation1(){System.out.println("Teach");}publicvoidPrimitiveOperation2(){System.out.println("Grade assignments");}}