机房重构之,职责链模式上机

简介: 机房重构之,职责链模式上机

相比于第一遍根据流程图写的上机流程,这一版利用职责链模式,将上机过程中的不同职责进行了封装,耦合度更低。符合了面向对象的设计原则:

这次,我把职责链放在了B层

设置上下级OpenHandler类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Entity;
namespace BLL.上机
{
    /// <summary>
    /// 上机抽象类
    /// </summary>
    public abstract class OpenHandler
    {
        //定义保护名称
        protected OpenHandler successor;
        //设置上下级
        public void SetSuccessor(OpenHandler successor)
        {
            this.successor = successor;
        }
        //定义返回字符串类型的抽象方法
        public abstract string HandleRequest(HanlderEntity online);
    }
}

判断是否上机职责OpenLine类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Entity;
namespace BLL.上机
{
    public class OpenLine : OpenHandler
    {
        public override string HandleRequest(HanlderEntity online)
        {
            //实例化判断类
            BLL.OO.JudgeBLL judge = new BLL.OO.JudgeBLL();
            //定义空字符串
            string message = " ";
            //判断是否正在上机
            bool i = judge.SelectLine(online);
            if (i == false)
            {
                message = "此卡号正在上机";
            }
            else
            {
                message = successor.HandleRequest(online);
            }
            return message;
        }
    }
}

判断余额职责OpenCash类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLL;
using Entity;
namespace BLL.上机
{
    public class OpenCash : OpenHandler
    {
        public override string HandleRequest(HanlderEntity online)
        {
            //实例化判断类
            BLL.OO.JudgeBLL judgeBLL = new BLL.OO.JudgeBLL();
            bool falg = judgeBLL.SelectLineCash(online);
            string message = "";
            if (falg == false)
            {
                message = "余额不足,请充值";
            }
            else
            {
                message = successor.HandleRequest(online);
            }
            return message;
        }
    }
}

插入上机信息职责OpenInsert类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Entity;
namespace BLL.上机
{
    public class OpenInsert : OpenCash
    {
        //OnLineEntity onLineEntity = new OnLineEntity();
        public override string HandleRequest(HanlderEntity online)
        {
            //查询用户基本信息
            dynamic[] vs = OO.SelectBLL.SelectUsersInfo(online);
            //将用户类型插入上机表和上机记录表
            //onLineEntity.CardNo = Convert.ToString(online);
            online.Level = vs[2];
            //onLineEntity.OperatorId = 0;
            //实例化插入类
            BLL.OO.InsertBLL insertBLL = new BLL.OO.InsertBLL();
            //插入正在上机表
            insertBLL.InsertLine(online);
            //插入上机记录表
            insertBLL.InsertOnline(online);
            string message = "上机成功";
            return message;
        }
    }
}

在上机的过程中,还用到了外观模式,在另一篇博客中有讲解。

上机UI层代码请看博客添加链接描述

相关文章
|
2月前
|
数据库 数据安全/隐私保护
机房收费系统之总结(一)
机房收费系统之总结(一)
28 0
|
2月前
|
设计模式 Java 开发者
一目了然!谁能想到Java多线程设计模式竟然被图解,看完不服不行
多线程设计模式在Java编程中起着至关重要的作用,它能够有效提高程序的执行效率,使得程序在处理大量数据和复杂任务时更加高效。然而,对于初学者来说,理解和应用多线程设计模式可能是一项相当具有挑战性的任务。为了让读者更加轻松地掌握这一复杂主题,我们带着一种全新的图解方式,深入剖析Java多线程设计模式的精髓。
|
2月前
|
算法
犯错总结--工厂模式和策略模式傻傻没分清
犯错总结--工厂模式和策略模式傻傻没分清
45 0
犯错总结--工厂模式和策略模式傻傻没分清
|
12月前
|
数据安全/隐私保护
机房收费系统—经典代码
机房收费系统—经典代码
|
11月前
|
设计模式 C++
2023-7-11-第十六式职责链模式
2023-7-11-第十六式职责链模式
51 0
|
12月前
|
数据库 数据安全/隐私保护
第一次机房收费系统总结
第一次机房收费系统总结
|
12月前
|
数据安全/隐私保护
机房收费系统-限制总结
机房收费系统-限制总结
32 0
|
12月前
第一次机房收费系统———退卡
第一次机房收费系统———退卡
|
SQL
机房收费系统—心得
机房收费系统—心得
57 0
|
Java 程序员
我该如何学好行为型模式(下)
我该如何学好行为型模式(下)
51 0