【机房重组】 职责链模式

2024-03-24 13:58
文章标签 模式 职责 机房 重组

本文主要是介绍【机房重组】 职责链模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     职责链模式:

     对多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递请求,知道有一个对象处理它为止。

     职责链模式:

   

     机房中我用职责链模式来计算消费时间的问题

    BLL层:

    TimeHandlerBLL类  

<span style="font-size:24px;">'**********************************************
'文件名:TimeHandlerBLL
'命名空间:BLL
'内容:
'功能:
'文件关系:
'作者:滕柳
'小组:
'生成日期:2016-3-25 18:23:13
'版本号:V1.0.0.0
'修改日志:
'版权说明:
'**********************************************	
''' <summary>
''' '抽象基类 
''' </summary>
Public MustInherit Class TimeHandlerBLL '抽象基类  Protected successor As TimeHandlerBLLPublic Sub setsuccessor(ByVal successor As TimeHandlerBLL)  '设置继承类  Me.successor = successorEnd SubPublic MustOverride Function handleTime(ByVal time As Integer) As Integer '处理请求的抽象方法  
End Class
</span>

   PrepareTimeHandlerBLL类

<span style="font-size:24px;">Public Class PrepareTimeHandlerBLL : Inherits TimeHandlerBLL  '准备时间Dim preparetime As IntegerPublic Sub New(ByVal EnBasicData As Entity.BasicInfo)  '构造函数,传入准备时间值         Dim baseinfo As New BLL.BBasicInfoDim table As DataTabletable = baseinfo.CheckLimitCash1(EnBasicData)EnBasicData.PrepareTime = table.Rows(0).Item(4)Me.preparetime = CInt(EnBasicData.PrepareTime)End SubPublic Overrides Function handleTime(time As Integer) As IntegerIf time <= preparetime Then  '如果上机时间小于准备时间,返回0  Return 0ElseReturn successor.handleTime(time) '否则转到下一位继承者  End IfEnd Function
End Class</span>
     UnitTimeHandlerBLL类

<span style="font-size:24px;">Public Class UnitTimeHandlerBLL : Inherits TimeHandlerBLL  '单位时间计算  Private unittime As IntegerPublic Sub New(ByVal basicdata As Entity.BasicInfo)Dim baseinfo As New BLL.BBasicInfoDim table As DataTabletable = baseinfo.CheckLimitCash1(basicdata)basicdata.UnitTime = table.Rows(0).Item(2)Me.unittime = CInt(basicdata.UnitTime)End SubPublic Overrides Function handleTime(time As Integer) As IntegerReturn Math.Abs(Int(-time / unittime)) * unittimeEnd Function
End Class
</span>
     BLeastTimeHandlerBLL类

<span style="font-size:24px;">Public Class BLeastTimeHandlerBLL : Inherits TimeHandlerBLL  '至少上机时间处理  Private leasttime As IntegerPublic Sub New(ByVal basicdata As Entity.BasicInfo)Dim baseinfo As New BLL.BBasicInfoDim table As DataTabletable = baseinfo.CheckLimitCash1(basicdata)basicdata.LeastTime = table.Rows(0).Item(3)Me.leasttime = CInt(basicdata.LeastTime) '将基础数据赋给leasttime这个变量  End SubPublic Overrides Function handleTime(time As Integer) As IntegerIf time <= leasttime ThenReturn leasttimeElseReturn successor.handleTime(time)End IfEnd Function
End Class
</span>

    Facede层

 

<span style="font-size:24px;">'消费时间的计算Public Function costTime(ByVal basicdata As Entity.BasicInfo, onlineinfo As Entity.OnlineInfo) As Integer'实例化,通过构造函数,传递参数  Dim bPrepareTime As New BLL.PrepareTimeHandlerBLL(basicdata)Dim bLeastTime As New BLL.BLeastTimeHandlerBLL(basicdata)Dim bAddTime As New BLL.UnitTimeHandlerBLL(basicdata)Dim online As New BLL.BOnlineInfo'添加上机时间TryDim table As DataTableonlineinfo.status = "正在使用"table = online.Oncardno(onlineinfo)onlineinfo.ondate = table.Rows(0).Item(1)onlineinfo.ontime = table.Rows(0).Item(2).ToStringCatch ex As ExceptionEnd TrybPrepareTime.setsuccessor(bLeastTime) '设置下一个继承者  bLeastTime.setsuccessor(bAddTime)'添加下机时间onlineinfo.offdate = DateTime.Now.ToString("yyyy-MM-dd")onlineinfo.offtime = TimeOfDayDim time As Integer '计算实际在线时间  time = DateDiff("n", onlineinfo.ontime, onlineinfo.offtime) + DateDiff("n", onlineinfo.ondate, onlineinfo.offdate)Return bPrepareTime.handleTime(time) '职责链处理,返回上机时间 End Function</span>

     UI层

<span style="font-size:24px;">  '调入外观层 传入数据消费时间 调用职责链模式txtCumeTime.Text = facade1.costTime(basicInfo, onlineInfo1)</span>
      好了就写到这里面了期待下一篇文章吧!


       

这篇关于【机房重组】 职责链模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841807

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架