`

责任链设计模式在AO审批流程的使用

阅读更多

在流程审批之中每个角色有很多的职责限制和上下级关系,比如一个请假制度,就会涉及到组长,项目经理,总经理签字的流程,当然了,你要是开小差溜出去一会不被逮着也是没关系的酷

下面我们说一场景:A要请假,人事问你请几天:1天,组长批准就行,2天项目经理,3以上总经理批

我们就来分析:

首先审批的人有共性:检查是否在职权之内和呈递上级两个动作

protocol Teamer{

    func checkDay( day: Int)

    func doIt()

 

}

然后就是具体的Leader类

class Leader: Teamer {

    privatevar leader:Teamer?

    privatevar day:Int?

    privatevar dayLimit:Int?

    init( leader:Teamer?){

        self.leader = leader;

 

    }

func checkDay( day: Int)

 

 }

    func doIt(){

}

这个类需要完成检测工功能和提交上级的动作。

那么我们怎么去确定哪个是终极Boss,嘿嘿,终极Boss是没有Leader的。思路有了我么就完善审批和呈交上级的code

 func checkDay( day:Int){

        self.day = day

        iflet aLeader = self.leader{

    

            let aDy = self.day

            let aLimit = self.dayLimit

            if aLimit <= aDy{

                println(" 职责审批限制\(self.dayLimit!) 呈交上级审批\(self.day!)")

            aLeader.checkDay(self.day!)

            }else{

            doIt()

            }

        }else{

         doIt()

        }

        

    }

    func  doIt(){

    println("审批:\(self.day!)")

 

    }

}

好了,实例出来了,我们就开始测试是否通过

 

var leader1 = Leader( leader: nil)

var leader2 = Leader(leader: leader1)

var leader3 = Leader(leader: leader2)

var leader4 = Leader(leader: leader3)

 

leader4.dayLimit = 1

leader3.dayLimit = 3

leader2.dayLimit = 5

 

leader4.checkDay(2)

 

leader4.checkDay(4)

 

leader4.checkDay(6)



 

  • 大小: 97.6 KB
分享到:
评论

相关推荐

    AO2011使用说明

    在使用 AO2011 之前,需要先启动桌面 SQLServerManager。这是因为 AO2011 需要连接到 SQL Server 数据库以便正确地运行。要启动桌面 SQLServerManager,用户需要按照以下步骤进行操作: * 打开桌面上的 ...

    基于AO的ArcGIS二次开发——AO程序设计入门

    基于AO的ArcGIS二次开发——AO程序设计入门,

    AO开发独立的应用程序

    在IT行业中,AO(Application Object)通常指的是IBM的Lotus Domino/Notes平台上的应用程序对象,而VC++(Visual C++)则是微软的集成开发环境,用于编写C++代码。将两者结合,我们可以创建一个独立运行的桌面应用...

    ao静态页面模型

    2. **响应式布局**:现代网页设计强调适应不同设备屏幕,AO模型很可能采用了响应式设计,使得页面在手机、平板电脑和桌面电脑上都能自适应显示,保持良好的可用性。 3. **模块化设计**:为了方便重用和定制,静态...

    AO二次开发学习基础教程

    - **工作流设计**:AO允许开发者构建复杂的业务流程,通过定义步骤、条件和参与者,实现文档审批、任务分配等自动化流程。 - **元数据管理**:AO提供了强大的元数据管理功能,允许添加、修改和使用元数据字段,以...

    Ao.rar_3D AO_3d_AO_AO+VB_VB AO

    标题 "Ao.rar_3D AO_3d_AO_AO+VB_VB AO" 暗示了这个压缩包可能包含与3D渲染和AO( Ambient Occlusion)技术相关的资源,以及与VB(Visual Basic)编程语言的结合使用。AO在3D图形处理中是一种重要的光照技术,用于...

    VC++ ao 的实现小程序

    【标题】"VC++ ao 的实现小程序" 涉及的知识点主要集中在使用Microsoft Visual C++(VC++)开发一个应用程序对象(AO)的过程。在Windows编程中,应用程序对象是程序的第一个实例,它负责初始化系统资源,管理应用...

    一键渲染AO图 通道图 3dmax插件

    在3D建模和渲染领域,3ds Max是一款广泛使用的软件,它提供了强大的工具集来创建复杂的三维模型、动画和渲染。"一键渲染AO图 通道图 3dmax插件"是针对3ds Max用户设计的一个高效工具,旨在简化渲染过程中的AO图( ...

    SMSL双木三林功率放大器AO200说明书.pdf

    1. 安全注意事项:在使用AO200之前,需要将其安装在通风良好的、阴凉、干燥、干净的位置,远离直射阳光热源、振动、灰尘、潮湿或寒冷。同时,需要使用本机指定的电压,高于指定电压的使用可能导致火灾、损坏本机或...

    AO2011密码清除工具

    用户在尝试使用AO密码清除工具之前,应该仔细阅读这份文档,确保正确、安全地操作,避免误操作导致的数据损失或其他问题。 在实际操作中,使用这样的密码清除工具通常涉及以下步骤: 1. 下载并解压包含AO密码清除...

    AO按钮安装.zip

    通过以上步骤,你应该能够在Windows 10系统上成功安装并使用带有AO按钮的中文版VC++6.0。尽管这是一款老旧的工具,但它仍然在某些编程场景中发挥着重要作用,特别是在教学和学习经典C++编程时。希望这个指南能帮助你...

    基于AO的符号组件设计与实现

    ### 基于AO的符号组件设计与实现 #### 概述 本文旨在探讨如何基于ArcObjects (AO) 设计并实现一个具有良好重用性的符号组件。该组件的设计与实现充分考虑了中国地理信息系统(GIS) 应用的特殊需求,并通过采用统一...

    AO4459中文资料

    描述中的“TQ210开发文档,里面详细记载了AO4459的原来和驱动开发的关系”,说明这份文档是针对TQ210开发环境的,涵盖了AO4459器件的原理及如何在驱动开发中使用它。 标签“AO4459”进一步强调了文档的重点是关于这...

    AO插件

    "AO插件"是一个在IT领域中常见的工具,主要用于增强软件功能或简化特定任务的执行。AO,全称可能是“Advanced ...在实际使用中,用户需要按照提供的文档或说明来安装和配置AO插件,以便充分利用其带来的优势。

    AO开发入门--AO二次开发入门好教程

    - **使用AO开发各类应用程序**:指导学员如何基于ArcGIS Desktop、ArcGIS Engine和ArcGIS Server等产品进行AO组件的应用程序开发。 - **高效利用AO开发资源**:教授学员如何寻找并利用有效的开发资源,提高开发效率...

    ArcGIS二次开发AO工具

    Desktop 开发平台主要包括 ArcMap、ArcCatalog 和 ArcScene 三个应用程序,这三个应用程序都是由 AO 搭建起来的,因此用户可以使用 AO 来完成这些应用程序的任务。开放性和扩展性则体现在 AO 组件没有提供的功能,...

    AO开发的详细案例5555555555555

    9. **最佳实践**:了解在AO开发中应遵循的设计模式和编码规范,以提高代码的可维护性和可扩展性。 10. **文档编写**:案例可能包含详细的步骤说明和代码注释,教导如何编写清晰的开发文档,以便于理解和复用代码。 ...

    ao.rar_AO C#

    【标题】"AO.rar_AO C#" 指的是一份与AO(Automation Objects)...总之,"AO.rar_AO C#"教程是一个适合C#开发者学习AO框架的资源,通过"ao.doc"文档,读者可以全面掌握AO的使用,从而在自己的项目中实现高效自动化测试。

    Ao基础开发教程

    你需要学习如何在这些环境中设置开发环境,如安装ArcGIS SDK,配置引用库,并创建简单的AO应用程序。例如,创建一个程序加载地图,添加图层,执行基本的空间查询,或者绘制新的地理要素。 此外,AO开发还涉及到事件...

    AO相关学习网址资料

    根据提供的信息,我们可以总结出以下与AO(ArcObjects)相关的学习资源及知识点: ### AOVBA 开发教程 - **作者**: locokoy - **链接**: [AOVBA开发教程](http://www.3snews.net/bbs/viewth...&extra=page%3D6) *...

Global site tag (gtag.js) - Google Analytics