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()
  • 相关阅读:
    Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用
    敌兵布阵(杭电1166)(树状数组)
    alibaba dexposed初步解析
    shell学习三十二天----read读取一行
    cocos2d-x CCScrollView 源代码分析
    语言-编程语言:Python
    GitHub:Python
    GitHub-Microsoft:DotNet4
    GitHub-Microsoft:DotNet3
    GitHub-Microsoft:DotNet2
  • 原文地址:https://www.cnblogs.com/Zzbj/p/15779724.html
Copyright © 2011-2022 走看看