【机房重组】 职责链模式

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

相关文章

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,一个数据处理框架

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试