Python之外观模式

一、介绍

外观模式又叫做门面模式,外观模式的核心在于将复杂的内部子系统封装起来,只向外界提供简单的调用接口。它是一种对象结构型模式。

二、外观模式

假设有一套 考试成绩打分 系统,由三个子系统组成:

  1. 录入考生信息
  2. 解析判定答案对错
  3. 计算分数
# 当对某个考生的试卷进行打分时,首先要录入考生信息,然后对试卷答案进行解析,最后计算出分数
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()
原文地址:https://www.cnblogs.com/Zzbj/p/15779724.html