hooyantsing's Blog

P97 模板模式(2)-豆浆制作

字数统计: 349阅读时长: 1 min
2020/11/12

尚硅谷Java设计模式(图解+框架源码剖析)

案例 豆浆制作

1
2
3
4
5
6
7
8
classDiagram
class SoyaMilk{
<<abstract>>
}
class RedBeanSoyaMilk
class PeanutSoyaMilk
SoyaMilk <|.. RedBeanSoyaMilk
SoyaMilk <|.. PeanutSoyaMilk

抽象类,抽象方法是子代实现之间的差异。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public abstract class SoyaMilk {
// 防止子类覆盖
final void make(){
select();
addCondiments();
soak();
beat();
}

void select(){
System.out.println("第一步,选好新鲜黄豆");
}

// 添加不同配料,抽象方法,由子类实现
abstract void addCondiments();

void soak(){
System.out.println("第三步,黄豆和配料浸泡");
}

void beat(){
System.out.println("第四步,黄豆和配料放入豆浆机打碎");
}
}

子类实现

1
2
3
4
5
6
public class RedBeanSoyaMilk extends SoyaMilk {
@Override
void addCondiments() {
System.out.println("加入红豆");
}
}
1
2
3
4
5
6
public class PeanutSoyaMilk extends SoyaMilk {
@Override
void addCondiments() {
System.out.println("加入花生");
}
}

调用测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Client {
public static void main(String[] args) {
// 制作红豆豆浆
System.out.println("---------- 红豆豆浆 ----------");
SoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
redBeanSoyaMilk.make();

// 制作花生豆浆
System.out.println("---------- 花生豆浆 ----------");
SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
peanutSoyaMilk.make();
}
}

执行结果:

1
2
3
4
5
6
7
8
9
10
---------- 红豆豆浆 ----------
第一步,选好新鲜黄豆
加入红豆
第三步,黄豆和配料浸泡
第四步,黄豆和配料放入豆浆机打碎
---------- 花生豆浆 ----------
第一步,选好新鲜黄豆
加入花生
第三步,黄豆和配料浸泡
第四步,黄豆和配料放入豆浆机打碎
CATALOG
  1. 1. 案例 豆浆制作