-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathTemplateMethodPattern.py
54 lines (38 loc) · 1.08 KB
/
TemplateMethodPattern.py
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# coding: utf8
import abc
class AbstractClass(object):
__metaclass__ = abc.ABCMeta
def template_method(self):
"""
模版方法
"""
self.defaultStep()
self.step1()
self.step2()
def defaultStep(self):
print("defaultStep in AbstractClass")
@abc.abstractmethod
def step1(self):
pass
@abc.abstractmethod
def step2(self):
pass
class ConcreteClass1(AbstractClass):
def step1(self):
print("step1 in ConcreteClass1")
def step2(self):
print("step2 in ConcreteClass1")
def defaultStep(self):
print("invoke defaultStep of AbstractClass")
AbstractClass.defaultStep(self)
print("defaultStep in ConcreteClass1")
class ConcreteClass2(AbstractClass):
def step1(self):
print("step1 in ConcreteClass2")
def step2(self):
print("step2 in ConcreteClass2")
if __name__ == "__main__":
concrete_class_1 = ConcreteClass1()
concrete_class_2 = ConcreteClass2()
concrete_class_1.template_method()
concrete_class_2.template_method()