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()
复制代码

 

posted @   我用python写Bug  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示