模板模式定义:封装了一个算法步骤,并允许子类为一个或多个步骤方法提供实现。模板模式可以使子类再不改变算法结构的情况下,重新定义算法中的某些步骤。
类图如下:
说明:模板模式就好比我们生活中的做菜,做菜的步骤是一定的:准备食材-》烹饪-》加佐料-》上桌,我们将做菜通用步骤抽象成父类,父类有一个统筹模板算法步骤的函数以及多个步骤方法,具体做什么菜则是继承父类的子类。子类可以重写一个或多个算法步骤。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public abstract class Cook
{ //做菜算法 public void makeFood(){ this .prepare(); //准备食材 this .cooking(); //烹饪 this .addCondiment(); //加佐料 this .serving(); //上菜 } public abstract void prepare(); public void cooking(){ System.out.println( "简单烹饪中" ); } public abstract void addCondiment(); public void serving(){ System.out.println( "上菜咯" ); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//红烧鱼做法 public class BraisedFish extends Cook
{ @Override public void prepare()
{ System.out.println( "买海鱼,刷鳞,洗净,切好葱,姜,蒜,辣椒。把鱼用少许盐,料酒,姜丝,白胡椒粉腌制10分钟" ); } @Override public void cooking()
{ System.out.println( "锅里倒油煸香葱姜蒜。炒香后然后再加入豆豉和豆瓣酱继续炒香。把腌制好的鱼放入锅内。倒入适量的清水,加入盐半勺,白糖半勺,料酒,盖上锅盖慢烧。" ); } @Override public void addCondiment()
{ System.out.println( "加入辣椒
葱 姜 蒜 盐 料酒 豆瓣酱 豆豉 白糖 白胡椒粉等酱料" ); } } |
1
2
3
4
5
|
public class Main
{ public static void main(String[]
args) { new BraisedFish().makeFood(); } } |