java设计模式(二):Template Method(模版方法)

来源:互联网 发布:linux setlocale 中文 编辑:程序博客网 时间:2024/06/05 17:31

        如果一个抽象父类提供多个子类的通用方法,并把一个或多个方法留给其子类去实现,这就是Template Method Pattern。这是一个很常用、很简单的设计模式,整个过程就是一个抽象类的实现。抽象类作为多个子类的通用模版,子类在抽象类的基础上进行扩展和改造,但总体上回大致保留抽象类的行为方法。

        在抽象父类Hero中定义了四个方法,其中move(),attact(),performSkills()是抽象方法,需要子类实现,模版方法start()在父类中实现,两个子类ShadowHunter和TerrorBlade分别继承Hero父类,并重写了其抽象方法。

package TemplateMethod;public abstract class Hero {public abstract void move();public abstract void attact();public abstract void performSkills();public final void start(){move();attact();performSkills();}}

 

package TemplateMethod;public class ShadowHunter extends Hero{private String s;public ShadowHunter(String s){this.s = s;}public void move(){System.out.println(s + " move!");}public void attact(){System.out.println(s + " attact!");}public void performSkills(){System.out.println(s + " performskills!");}}


 

package TemplateMethod;public class TerrorBlade extends Hero{private String s;public TerrorBlade(String s){this.s = s;}public void move(){System.out.println(s + " move!");}public void attact(){System.out.println(s + " attact!");}public void performSkills(){System.out.println(s + " performskills!");}}


 

package TemplateMethod;public class Main {public static void main(String[] args){Hero h1 = new ShadowHunter("ShadowHunter");    Hero h2 = new TerrorBlade("TerrorBlade");    h1.start();    h2.start();}}

 

输出结果为 :ShadowHunter move!
ShadowHunter attact!
ShadowHunter performskills!
TerrorBlade move!
TerrorBlade attact!
TerrorBlade performskills!

原创粉丝点击