Python之外观模式
一、介绍
外观模式又叫做门面模式,外观模式的核心在于将复杂的内部子系统封装起来,只向外界提供简单的调用接口。它是一种对象结构型模式。
二、外观模式
假设有一套 考试成绩打分 系统,由三个子系统组成:
- 录入考生信息
- 解析判定答案对错
- 计算分数
# 当对某个考生的试卷进行打分时,首先要录入考生信息,然后对试卷答案进行解析,最后计算出分数 class InputInfo: def run(self): print("录入考生信息") class ParseAnswer: def run(self): print("解析试卷答案") class CalculateScore: def run(self): print("计算分数") # 业务代码 if __name__ == "__main__": info = InputInfo() answer = ParseAnswer() score = CalculateScore() info.run() answer.run() score.run()
上面这样完成我们也是完成了业务需求,但是可以看出来业务逻辑步骤会比较繁琐,耦合度较大。
这时我们就需要将这些逻辑进行封装,即减少了重复代码,也提供了一个简单的对外接口,这就是外观模式。
# 当对某个考生的试卷进行打分时,首先要录入考生信息,然后对试卷答案进行解析,最后计算出分数 class InputInfo: def run(self): print("录入考生信息") class ParseAnswer: def run(self): print("解析试卷答案") class CalculateScore: def run(self): print("计算分数") class AutomaticScoring: """在外观类中封装了对子系统的操作""" def __init__(self): self.info = InputInfo() self.answer = ParseAnswer() self.score = CalculateScore() def auto_run(self): self.info.run() self.answer.run() self.score.run() # 业务代码 if __name__ == "__main__": AutomaticScoring().auto_run()