zoukankan      html  css  js  c++  java
  • 面向对象式设计和面向函数式设计

    面向对象式设计:

    class Checker(object):
        def check(self, context):
            pass
    
    class EmailChecker(Checker):
        def check(self, context):
            if not context['email'].lower() == 'zanxiaofeng@163.com':
                return "Email is error"
    
    class AccessCodeChecker(Checker):
        def check(self, context):
            if not context['access_code'].lower().startswith('wg'):
                return "AccessCode is error"
    
    class ComposedChecker(Checker):
        def __init__(self, *checkers):
            self.checkers = checkers
    
        def check(self, context):
            for checker in self.checkers:
                result = checker.check(context)
                return result if result else None
    
    class EmailAndAccessCodeChecker(ComposedChecker):
        def __init__(self):
            super().__init__(EmailChecker(), AccessCodeChecker())
    
    checker = EmailAndAccessCodeChecker()
    assert checker.check({'email': '', 'access_code': 'wg_123'}) == "Email is error"
    assert checker.check({'email': 'zanxiaofeng@163.com', 'access_code': 'wg_123'}) is None

    面向函数式设计:

    def email_check(context):
        if not context['email'].lower() == 'zanxiaofeng@163.com':
            return "Email is error"
    
    
    def access_code_check(context):
        if not context['access_code'].lower().startswith('wg'):
            return "AccessCode is error"
    
    
    def execute_checks(context, *checks):
        for check in checks:
            result = check(context)
            if result:
                return result
    
    
    def email_and_access_code_check(context):
        return execute_checks(context, email_check, access_code_check)
    
    assert email_and_access_code_check({'email': '', 'access_code': 'wg_123'}) == "Email is error"
    assert email_and_access_code_check({'email': 'zanxiaofeng@163.com', 'access_code': 'wg_123'}) is None

      

  • 相关阅读:
    SQL 函数、存储过程、游标与事务模板
    JS给Element添加方法
    检测当前浏览器是否启用JS,Cookie
    Android 电量测试以及电量优化
    [转载]百度免费的文本编辑器Ueditor的使用说明
    sql 常用信息
    vs2010智能提示消失的解决办法
    IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
    智能的产生
    C#日期格式化
  • 原文地址:https://www.cnblogs.com/zanxiaofeng/p/5534239.html
Copyright © 2011-2022 走看看