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()
  • 相关阅读:
    公安备案接入服务商如何填写?(网站接入信息)
    VSCode 开发Vue必备插件
    阿里云ecs从零配置centos 安装宝塔bt环境 (安装失败提示setuptools installation failed)
    hover时下划线从中间向两端渐变
    phpcms v9后台增加阅读量字段,可任意修改阅读量
    织梦登录后台变空白解决方法大全
    html鼠标滚动后导航栏吸顶效果
    关于height:100%和height:100vh的区别
    mycat
    Hash碰撞
  • 原文地址:https://www.cnblogs.com/Zzbj/p/15779724.html
Copyright © 2011-2022 走看看