zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    如何在eclipse+pydev运行scrapy项目
    QT下发布APP 文件(Mac)
    QT调用python脚本
    Python-Mac 安装 PyQt4-转
    <转载>在Sublime Text 2/3 中使用Git插件连接GitHub
    python+Eclipse+pydev环境搭建
    [codeforces1270G]Subset with Zero Sum 数学 建图
    [计算机网络]学习笔记
    [ubuntu] VMware Tools 安装详细过程与使用 ——主机和ubuntu虚拟机之间的文本和文件传递
    [codeforces1221D] Make The Fence Great Again dp
  • 原文地址:https://www.cnblogs.com/Zzbj/p/15779724.html
Copyright © 2011-2022 走看看