行为型模式-职责链模式

发布时间 2023-06-29 10:57:20作者: 你看起来真的很好吃
# 行为型模式-责任链模式

from abc import ABCMeta, abstractmethod


class IHandler(metaclass=ABCMeta):
    @abstractmethod
    def check_permissions(self, request):
        pass


class AdminPermission(IHandler):

    def check_permissions(self, request):
        if request == "管理员":
            print("管理员权限验证成功")
            return True
        else:
            return False


class UserPermission(IHandler):

    def check_permissions(self, request):
        if request == "普通用户":
            print("普通用户权限验证成功")
            return True
        else:
           return False


class ZGPermission(IHandler):

    def check_permissions(self, request):
        if request == "主管":
            print("主管权限验证成功")
            return True
        else:
            return False


class Login():
    permission_list = []

    def check_login(self, request):
        # 权限验证流程, 检查普通用户,主管、管理员
        a = UserPermission()
        self.permission_list.append(a)

        b = ZGPermission()
        self.permission_list.append(b)

        c = AdminPermission()
        self.permission_list.append(c)

        for i, item in enumerate(self.permission_list):
            if item.check_permissions(request):
                return True
        return False


if __name__ == "__main__":
    check = Login()
    if not check.check_login("管理员1"):
        print("登录失败")
    else:
        print("登录成功")