-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathInterfaceExample.py
68 lines (47 loc) · 2.2 KB
/
InterfaceExample.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- coding: utf-8 -*-
'''
接口是一种抽象方法的集合,与类属于不同的概念。类描述对象的属性和方法,接口则定义类需要实现的方法。
接口和抽象类有点像,都是一种抽象类型,但两者很大不同。
抽象类是对一种事物整体的抽象,即对类抽象,包括属性、行为等,子类和抽象类是一种"is-a"的关系。
而接口是对行为的抽象,是对类局部(行为)进行抽象,接口表示一种"can-do"的关系。
抽象类作为子类的父类,它是一种模板式设计。接口是一种行为规范,它是一种辐射式设计。
Py中没有interface,可以用class模拟。
本示例:
- Door接口定义了门的基本行为:打开和关闭。
- Alarm接口定义了报警器的行为:触发报警。
- AbstractAlarm抽象类实现了Alarm接口,提供了一个空的trigger()方法,具体的报警器类可以通过覆盖这个方法来实现具体的报警逻辑。
- SecurityDoor类实现了Door接口,并继承了AbstractAlarm类,表示一种既可以打开和关闭的门,又具有报警功能。
通过这种设计,我们实现了门和报警器的分离,并且可以轻松地扩展系统以支持其他类型的门和报警器,而不需要修改现有的代码。
'''
# 定义门接口
class Door:
def open(self): # 打开门
pass
def close(self): # 关闭门
pass
# 定义报警器接口
class Alarm:
def trigger(self): # 触发报警
pass
# 抽象类:AbstractAlarm,实现了报警器接口
class AbstractAlarm(Alarm):
def trigger(self):
# 空方法体,具体报警器实现时需覆盖该方法
pass
# 实现安全门类,继承报警抽象类,同时实现了门接口和报警器接口
class SecurityDoor(AbstractAlarm, Door):
def open(self):
print("安全门打开")
def close(self):
print("安全门关闭")
# 覆盖父类的trigger方法,实现具体的报警逻辑
def trigger(self):
print("警报触发! 有一条安全告警。")
# 测试验证
security_door = SecurityDoor()
# 打开门
security_door.open()
# 关闭门
security_door.close()
# 触发报警
security_door.trigger()