【机房重组】 职责链模式

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

相关文章

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

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

状态模式state

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/state 在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在状态模式中,player.getState()获取的是player的当前状态,通常是一个实现了状态接口的对象。 onPlay()是状态模式中定义的一个方法,不同状态下(例如“正在播放”、“暂停

为什么现在很多人愿意选择做债务重组?债重组真的就这么好吗?

债务重组,起初作为面向优质企业客户的定制化大额融资策略,以其高效周期著称,一个月便显成效。然而,随着时代的车轮滚滚向前,它已悄然转变为负债累累、深陷网贷泥潭者的救赎之道。在此路径下,个人可先借助专业机构暂代月供,经一段时间养护征信之后,转向银行获取低成本贷款,用以替换高昂网贷,实现利息减负与成本优化的双重目标。 尽管债务重组的代价不菲,远超传统贷款成本,但其吸引力依旧强劲,背后逻辑深刻。其一