Plain's Blog

休想打败我的生活🔥

设计模式之模板方法(抽象类的应用)

Plain's Avatar 2018-12-11 Java笔记

  • 定义

模板方法(Tenplete Method)模式: 定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。

下面举个生活中常见的例子解释上面这段话。大家肯定或多或少吃过煎饼果子,那么🌯煎饼果子是怎么做出来的呢,首先先放油,摊面,放鸡蛋🥚,翻过来,等差不多的时候抹上酱,加入火腿、鸡柳等等、最后放入生菜。。。这是做煎饼果子的一个进本步骤,这就相当于定义了一个操作中的算法的骨架,而我们也是会参与到煎饼果子的制作过程中的,比如在摊面时,老板就会问我们要什么类型的面啊等等,这就是一个可变的部分。相信大家看到这应该理解了模板方法的定义。

  • 实际案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class TempleteTest {
public static void main(String[] args) {
UserManager um = new UserManager();
um.action("admin", "add");
}
}

abstract class BaseManager {
//用户权限的判断在父类中进行
public void action(String name, String method) {
if ("admin".equals(name)) {
execute(method);
} else {
System.out.println("不是管理员,没有权限");
}
}
//具体的操作在子类中进行具体实现
abstract public void execute(String method);
}

//用户管理类
class UserManager extends BaseManager {
public void execute(String method) {
if ("add".equals(method)) {
System.out.println("执行了add操作");
} else if ("delete".equals(method)) {
System.out.println("执行了delete操作");
}
}
}

本文作者 : Plain
This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接 : https://plain-dev.com/design-patterns-template-method/

本文最后更新于 天前,文中所描述的信息可能已发生改变