from abc import ABC, abstractmethod
class Request:
def __init__(self, cookie=None, user_agent=None):
self.cookie = cookie
self.user_agent = user_agent
class Filter(ABC):
@abstractmethod
def filter(self, request):
pass
class UserAgentFilter(Filter):
def filter(self, request):
if request.user_agent:
return True
else:
return False
class CookieFilter(Filter):
def filter(self, request):
if request.cookie:
return True
else:
return False
def process_request(request):
for FilterClass in filters:
f = FilterClass()
if not f.filter(request):
return 404
return '<h1>百度网盘-个人中心</h1>'
if __name__ == '__main__':
filters = [UserAgentFilter, CookieFilter]
# request = Request(cookie='BAIDUID=E38783E3724719B012A3B62C2D8C819C',user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400')
request = Request()
response = process_request(request)
print(response)
【设计模式】过滤器模式
最新推荐文章于 2024-05-05 21:37:47 发布