首页 > 其他分享 >行为型模式(一) 责任链模式

行为型模式(一) 责任链模式

时间:2023-10-27 16:23:43浏览次数:31  
标签:__ ABCMeta self 模式 责任 Manager 行为 def

责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象能够处理它为止。

角色:

  • 抽象处理者
  • 具体处理者
  • 客户端
from abc import ABCMeta,abstractmethod

class Manager(metaclass=ABCMeta):
    @abstractmethod
    def run(self):
        pass

class GroupManager(Manager):
    def __init__(self):
        self.next = DepartManager()
    def run(self,day):
        if day<=3:
            print('组长审批%d天'%day)
        else:
            print('组长权限不够')
            self.next.run(day)

class DepartManager(Manager):
    def __init__(self):
        self.next = CTO()
    def run(self,day):
        if day<=5:
            print('部门经理审批%d天'%day)
        else:
            print('部门经理权限不够')
            self.next.run(day)

class CTO(Manager):
    def run(self,day):
        if day<=10:
            print('CTO审批%d天'%day)
        else:
            print('CTO不同意审批')
            

h = GroupManager()
h.run(6)

组长权限不够
部门经理权限不够
CTO审批6天

标签:__,ABCMeta,self,模式,责任,Manager,行为,def
From: https://www.cnblogs.com/dxnui119/p/17792614.html

相关文章

  • 设计模式-策略模式
    参考:https://blog.51cto.com/u_16125162/6329805定义:策略模式(StrategyPattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。是一种对象行为型模式。打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方......
  • 单例模式-双重校验锁
    参考;https://blog.csdn.net/weixin_44471490/article/details/108929289双重校验锁饿汉模式是不需要加锁来保证单例的,而懒汉模式虽然节省了内存,但是却需要使用锁来保证单例,因此,双重校验锁就是懒汉模式的升级版本。普通懒汉式publicclassSingleton{ privatestatic......
  • 小端模式和大端模式——踩坑记录
    大端小端1前言在做项目时,需要将报文发送给硬件端,报文打包我都是用的大端写入Bytebuf(使用的netty),老大审查代码时,说我写错了,说硬件那边要求是小端传输。不过改成小端写入也容易,重要的是牢记这个知识点。于是趁这个机会复习一下大端和小端。2概念大端(Big-Endian)和小端(Litt......
  • uniapp的easycom模式
    uniapp的easycom模式,无需import和注册components,即可在页面使用固定目录下的组件。这个目的是简化引用,其实还挺坑的。1.直接使用组件,全局又搜索不到引用,第一感觉让人摸不着头脑2.不引用组件,文件下放了多个组件,不知道到底使用了哪个3.进行组件优化,要删除或提取某些组件的时......
  • 【编程开发指南】「设计模式系列」一起来学编程界的“兵法”设计模式(序章)
    设计模式是什么设计模式是一种被广泛应用于软件开发中的技术,它可以帮助开发人员更好地组织和管理代码,提高代码的可读性和可维护性。本文将介绍设计模式的概念、分类和应用场景。设计模式的概念设计模式是一种被反复使用的代码设计经验,它可以解决特定问题的通用解决方案。设计模式不......
  • 软件设计之抽象工厂模式
    类图代码packagetest;importjava.util.Scanner;publicclasstest3{publicstaticvoidmain(String[]args){Factorysfactory=null;ProductAproductA=null;ProductBproductB=null;System.out.println("请输入你想要的......
  • 设计模式—创建型模式之单例模式
    设计模式—创建型模式之单例模式介绍单例模式说明:一个单一的类,负责创建自己的对象,同时确保系统中只有单个对象被创建。单例模式特点:某个类只能有一个实例;(构造器私有)它必须自行创建这个实例;(自己编写实例化逻辑)它必须自行向整个系统提供这个实例;(对外提供实例化方法)单例模式......
  • pageofficeV6强制留痕模式编辑
    转载:强制留痕模式编辑强制留痕模式编辑注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。Word中的“痕迹”功能可以跟踪文档中所做的更改。痕迹可以包括添加、删除、移动和格式更改等。Word提供了“痕迹保留”功......
  • Nacos单机模式配置远程数据源、配置身份认证
    1.nacos介绍官网链接:https://nacos.io/zh-cn/docs/what-is-nacos.htmlGithub:https://github.com/alibaba/nacos/Nacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于......
  • 结构型模式(三) 外观模式
    外观模式:是为了给子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得子系统更加容易使用。减少系统之间的耦合性,提高了灵活性和安全性角色:外观类、子系统类classCpu:defstart(self):print('cpustart')defstop(self):......