一. 定义Template Method(模板方法模式):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
二. 角色抽象模板(AbstractTemplate)角色:定义一个或多个抽象操作,以便让子类实现。定义并实现一个模板方法。 具体模板(ConcreteTemplate)角色:实现父类所定义的一个或多个抽象方法。每一个抽象模板角色可对应多个具体模板角色。
三. 实现每个人都经历着生老病死,但是不同的人的人生也是不同的,所以这里定义一个人作为抽象模板角色,而不同的人则是具体模板角色。
Test.java public class Test { public static void main(String[] args) { Human jobs = new GreatMan(); Human sb = new PoolMan(); jobs.life(); sb.life(); } } 测试类,这里有一个成功的人生和一个失败的人生。
Human.java public abstract class Human { public void life(){ born(); study(); work(); dead(); } public abstract void born(); public abstract void study(); public abstract void work(); public abstract void dead(); } 抽象模板角色,有出生,学习,工作和死亡四个方法,还有一个人生的模板方法。
GreatMan.java public class GreatMan extends Human {
@Override public void born() { System.out.println("生在贫困家庭"); }
@Override public void study() { System.out.println("学习努力用功,成绩优异"); }
@Override public void work() { System.out.println("找到一份好工作,家庭事业稳定"); }
@Override public void dead() { System.out.println("光荣的死去"); }
} 伟人类,实现了抽象模板类的抽象方法。
PoolMan.java public class PoolMan extends Human {
@Override public void born() { System.out.println("出生在达官显富家中"); }
@Override public void study() { System.out.println("仗着家中财力雄厚,不好好学习"); }
@Override public void work() { System.out.println("不去工作,坐吃山空"); }
@Override public void dead() { System.out.println("悲凉的死去"); }
} 失败的人生,同上。
|