在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
抽象类:Penguin
package TemplatePattern;
public abstract class Penguin {
public String name;
public Penguin(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void eating() {
System.out.println(name + "吃饭");
}
public void sleeping() {
System.out.println(name + "睡觉");
}
public abstract void beating();
public void everyday() {
eating();
sleeping();
beating();
}
}
子类:LittlePenguin
public class LittlePenguin extends Penguin {
public LittlePenguin(String name) {
super(name);
}
@Override
public void beating() {
System.out.println(name + "用小翅膀打");
}
}
子类:MiddlePenguin
public class MiddlePenguin extends Penguin{
public MiddlePenguin(String name) {
super(name);
}
@Override
public void beating() {
System.out.println(name + "用肚子打");
}
}
测试类:
public class Test {
public static void main(String[] args) {
LittlePenguin littlePenguin = new LittlePenguin("小企鹅");
littlePenguin.everyday();
MiddlePenguin middlePenguin = new MiddlePenguin("中企鹅");
middlePenguin.everyday();
}
}
输出结构:
小企鹅吃饭
小企鹅睡觉
小企鹅用小翅膀打
中企鹅吃饭
中企鹅睡觉
中企鹅用肚子打