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

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

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

这次,我把职责链放在了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层代码请看博客添加链接描述

相关文章
|
设计模式
趣解设计模式之《小王的披萨店续集》
趣解设计模式之《小王的披萨店续集》
94 0
|
Go
腥风血雨中,这招救了我的代码!
腥风血雨中,这招救了我的代码!
70 0
|
9月前
|
算法
犯错总结--工厂模式和策略模式傻傻没分清
犯错总结--工厂模式和策略模式傻傻没分清
70 0
犯错总结--工厂模式和策略模式傻傻没分清
|
设计模式
趣解设计模式之《小王看病记》
趣解设计模式之《小王看病记》
83 0
|
设计模式 C++
2023-7-11-第十六式职责链模式
2023-7-11-第十六式职责链模式
78 0
|
设计模式 调度 C++
2023-7-14-第十九式中介者模式
2023-7-14-第十九式中介者模式
83 0
|
安全 Java 编译器
学妹不懂Java泛型,非让我写一篇给她看看(有图为证)
笔者有个学妹就遇到了相同的境遇,学弟被泛型搞得头晕目眩,搞不懂泛型是个啥玩意。天天用的泛型也不知道啥玩意(她可能都不知道她有没有用泛型)。立图为证!当然,笔者深度还欠缺,如果错误还请指正!
153 0
学妹不懂Java泛型,非让我写一篇给她看看(有图为证)
|
设计模式 Java
设计模式铺铺路(面向对象设计的原则一二)
我们的知识星球马上就要开始更新设计模式了,在更新设计模式之前,我们是不是需要做一些准备呢?否则设计模式中一些遵循的原则大家会一头雾水,所以我今天来给大家说一些面向对象的七种原则,有人说是6种有人说是7种,我个人认为是7种,我就按照7种来说,今天我就介绍2种,下一篇文章将会继续介绍剩下的五种原则,这些原则也会在设计模式中出现,各位技术人,欢迎大家的踊跃参加呦。
设计模式铺铺路(面向对象设计的原则一二)
|
设计模式 算法 前端开发
好记性不如烂笔头——设计模式
好记性不如烂笔头——设计模式
好记性不如烂笔头——设计模式
|
设计模式 前端开发 JavaScript
好记性不如烂笔头——23种设计模式(上)
好记性不如烂笔头——23种设计模式(上)
好记性不如烂笔头——23种设计模式(上)