模板方法
在基类中定义算法框架,将不可变部分算法,放到基类中,将可变部分算法延迟到子类中实现,使子类在不改变算法结构的前提下,完成自己的特殊部分算法
注意点:
为了保证算法结构不被子类改变,要在定义算法结构的方法上加final修饰符
自我理解
抽离算法结构,具体算法延时实现
需求场景
算法步骤相同,但每步的具体实现不同
代码模板:
/**
* 人的模板类
*/
public abstract class PersonComplete {
public final void desc() {
hair();
skin();
eye();
}
protected abstract void hair();
protected abstract void skin();
protected abstract void eye();
}
/**
* 黄种人类
*/
public class YellowPeople extends PersonComplete {
@Override
protected void hair() {
System.out.println("黄种人是黑头发");
}
@Override
protected void skin() {
System.out.println("黄种人是黄皮肤");
}
@Override
protected void eye() {
System.out.println("黄种人是黑眼睛");
}
}
/**
* 黑种人类
*/
public class BlackPerson extends PersonComplete {
@Override
protected void hair() {
System.out.println("blacks have brown hair");
}
@Override
protected void skin() {
System.out.println("blacks have black skin");
}
@Override
protected void eye() {
System.out.println("blacks have black eyes");
}
}
测试代码:
PersonComplete person = new YellowPeople();
person.desc();