• 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()
  • 相关阅读:
    .Netcore 2.0 Ocelot Api网关教程(7)- 限流
    .Netcore 2.0 Ocelot Api网关教程(6)- 配置管理
    .Netcore 2.0 Ocelot Api网关教程(5)- 认证和授权
    .Netcore 2.0 Ocelot Api网关教程(4)- 服务发现
    字符串方法集锦
    location下的属性集锦
    Js apply call方法详解
    所有事件event集锦
    移动端常用默认样式
    原生js的各种方法
  • 原文地址:https://www.cnblogs.com/Zzbj/p/15779724.html
Copyright © 2020-2023  润新知