1.作用
减少代码的重复
2.看例子说话
做这么件事:吃饭
第一步:感觉饿了;
第二步:思索要吃什么饭;
第三步:大吼:“妈妈,我饿了,我要吃什么什么;
第四步:妈妈说滚,自己做;
第五步:自己做好后,和妈妈一起吃饭;
第六步:自己再把锅给刷了,事件结束。
1.问题
到了晚上嘞,流程都差不多,唯一的区别在于第三步,大吼的内容有区别,我们在写吃米饭,吃面条吃牛排等的代码时,就会写大量的相同代码(除第三步外都相同)所以,我们需要搞模板模式,简化我们的工作,不用写那么多重复代码。
那么问题来了,我们要怎么办嘞
2.解决办法
1.定义抽象类
2.搞一个模板方法,将相同代码放进去;
3.搞个抽象方法,具体实现交给子类去办;
public class Test {
public static void main(String[] args) {
System.out.println("hahahhahahahahahah");
System.out.println("===========================吃米饭=====");
Rice rice = new Rice();
rice.eatProcess();//调用的是父类的方法
System.out.println("===========================吃面=====");
Noodles noodles = new Noodles();
noodles.eatProcess();
}
}
abstract class Food { //此乃定义的抽象类
final void eatProcess(){ //此乃模板方法,下面除了抽象方法,都是相同的代码 (final是为了防止子类瞎改代码,使模板出错)
feel();
reflection();
shout();//调用抽象方法,运行时具体操作由子类完成
cook();
washPot();
}
void feel() {
System.out.println("怎么这么快就饿了呢");
}
void reflection() {
System.out.println("我得好好想想要吃点啥");
}
abstract void shout();//注意,此处时抽象方法
void momReplies() {
System.out.println("滚!!!,要吃自己做");
}
void cook() {
System.out.println("妈妈,我做好啦,来吃饭啦!!!");
}
void washPot() {
System.out.println("锅刷好了,吃饭解决完毕");
}
}
class Rice extends Food {
@Override
void shout() {
System.out.println("我得炫个米饭");
}
}
class Noodles extends Food {
@Override
void shout() {
System.out.println("我得炫个面");
}
}
结果
ps:有啥不理解的可以再问我,咱互相讨论学习
pps:俺妈挺好的,欸嘿嘿