zoukankan      html  css  js  c++  java
  • 表模块模式简介

    表模块模式简介

    其实我觉得写博文也可以跟写小说一样,有连载,只要读得顺畅就好,我并不想通过几篇博文读下来,就让读者成为某个方面的专家。

    在每写一篇短短的博文,都曾参考过很多有价值的书籍和其他人的博文,所以不可能把所有的东西都写进来的。

    我最近在思考的时候,经常茶不思饭不想,不知道的人看来,以为我会是得了相思病的少年。

    上集回顾

    在上几篇业务层的设计都描述的是领域模型的模式,为了解释领域模型的使用,我居然提前写了一点数据访问层。

    领域模型适合业务逻辑比较复杂,业务规则繁多,因为这些复杂的元素都会被内聚在领域模型之中,而领域模型又可以被重用。

    这样一来就能避免许多业务逻辑的重复分布在各个地方,对维护带来说,这是非常有爱的。

    但是在需求和设计阶段,需要花费很多时间,但是你会发现领域模型重用了几次之后,就会体会到它的好处。

    初学者不要轻易尝试,尤其是半路出家的程序员。

    所以接下来打算介绍一些比较简单的模式,表模块模式和事务脚本模式。

    我会对表模块做一个比较简单的描述,就是比较简单,因为我不是很喜欢它。

    相对而言,实践中事务脚本我用的还算比较有心得,打算在后续的博文中慢慢介绍。

    表模块(Table Module)

    先来宏观地看一下操作流程:

    通过创建一个DataSet数据集,添加一个表,轻松构建一个强类型的DataSet

    可以为它添加一个查询

    非常轻松,VS将自动生成查询SQL,但是SQL语句无法太复杂,不能超出VS的识别范围。

    调用方法:

    可以看到它返回的是一个强类型的DataTable,使用起来非常方便,但是当你实战中用的时候,会发现问题的,比如你有一个备注字段是Null,试试看吧,至少在.NET2.0中就悲剧了。

    表数据网关模式:

    用代码直观地表示:

    在数据网关中执行SQL命令返回想要的数据集,然后在业务类中处理,得到想要的结果。

    业务类

    复制代码
        PPDataSet.PP_VIRTUALSENDCONTROLDataTable _table=null;
    
        public VirtualSendControlManager() { }
    
        public VirtualSendControlManager(PPDataSet.PP_VIRTUALSENDCONTROLDataTable table)
        {
            _table = table;
        }
    
        public PPDataSet.PP_VIRTUALSENDCONTROLRow GetRow(int index)
        {
            if (_table.Rows.Count == 0)
            {
                return null;
            }
            return _table.Rows[index] as PPDataSet.PP_VIRTUALSENDCONTROLRow;
        }
    复制代码


    小结:

    VS生成的强类型的DataTable给我们带来很多便利,它可以是某个表,也可以是视图。

    只不过使用中它还是会有一些问题的,比如之前提到的null的问题,不知道是不是一个bug。

    如果不使用VS生成的强类型数据集,那么表模块就失去了自己的优势,尤其是业务对象和数据库表结构差异较大的情况下。

    如果要实现自定义的强类型数据集,可以参考微软的源码,然后自行设计,不过工作量受不了啊。

    表模块模式是一个搞毕业设计的利器(邪恶的想法)。

     
     
    分类: 架构设计
  • 相关阅读:
    Linux 下安装nodejs
    Linux 下安装JDK
    ubuntu 把软件源修改为国内源
    vi/vim 命令使用详解
    不同浏览器css引入外部字体的方式
    npx 命令介绍
    ICloud没有密码怎么注销?
    装修后才知道的79件事
    天翼宽带政企网关B2-1P 如何获得超级管理员账号?
    家庭治疗偏头痛
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3216559.html
Copyright © 2011-2022 走看看