Object-oriented design:
classChecker (object):defCheck (self, context):PassclassEmailchecker (Checker):defCheck (self, context):if notcontext['Email'].lower () = ='[email protected]': return "Email is error"classAccesscodechecker (Checker):defCheck (self, context):if notcontext['Access_code'].lower (). StartsWith ('WG'): return "Accesscode is error"classComposedchecker (Checker):def __init__(Self, *checkers): Self.checkers=CheckersdefCheck (self, context): forCheckerinchSelf.checkers:result=Checker.check (context)returnResultifResultElseNoneclassEmailandaccesscodechecker (composedchecker):def __init__(self): Super ().__init__(Emailchecker (), Accesscodechecker ()) Checker=Emailandaccesscodechecker ()assertChecker.check ({'Email':"','Access_code':'wg_123'}) =="Email is error"assertChecker.check ({'Email':'[email protected]','Access_code':'wg_123'}) isNone
Functional-oriented design:
defEmail_check (context):if notcontext['Email'].lower () = ='[email protected]': return "Email is error"defAccess_code_check (context):if notcontext['Access_code'].lower (). StartsWith ('WG'): return "Accesscode is error"defExecute_checks (Context, *checks): forCheckinchChecks:result=Check (context)ifResult:returnresultdefEmail_and_access_code_check (context):returnexecute_checks (context, Email_check, Access_code_check)assertEmail_and_access_code_check ({'Email':"','Access_code':'wg_123'}) =="Email is error"assertEmail_and_access_code_check ({'Email':'[email protected]','Access_code':'wg_123'}) isNone
Object-oriented design and function-oriented design