接着上篇我们说的配置文件,今天我们来说一下接口。

1、UML图

2、三层架构

3、Sqlhelper

4、配置文件

5、接口

6、设计模式


什么是接口呢?我们可以将接口理解为用于沟通的中介的抽象化。可以将接口理解为我们生活中的“中介”。那么我们为什么要在机房收费系统中加接口呢?机房收费系统中的接口到底起着什么作用呢?看一下下面这段代码,这是我接口的一段代码。

'***********************************************************************************
'作者:高迎
'小组:
'说明:接口类
'创建日期:2013.05.25
'版本号:v1.1.0
'***********************************************************************************
Imports Entity
Public Interface MainIDAL
''' <summary>
''' 定义一个函数,用来查询Student表中是否有卡号存在
''' </summary>
''' <param name="thisCardno"></param>
''' <returns>如果不存在提示信息您所上机的卡号不存在,如果存在返回一个表</returns>
''' <remarks></remarks>
Function QueryStudent(ByVal thisCardno As StudentEntity) As DataTable ''' <summary>
''' 查到有卡号存在的话往OnRecord表中添加记录
''' </summary>
''' <param name="thisData"></param>
''' <returns>添加成功返回True,否则返回False</returns>
''' <remarks></remarks>
Function InsertOnRecord(ByVal thisData As OnRecordEntity) As Boolean ''' <summary>
''' 同时往OnlineState表中添加记录
''' </summary>
''' <param name="thisData"></param>
''' <returns>添加成功返回True,否则返回False</returns>
''' <remarks></remarks>
Function InsertOnlineState(ByVal thisData As OnlineStateEntity) As Boolean

我们会发现,接口中都是一些方法。其实,细细会发现接口中的这些方法都是“虚方法”。为什么这么说呢?因为接口中的方法(包括方法名、参数、返回类型等)都是从D层照搬过来的,所以是D层依赖接口实现这些方法,所以说接口中的方法都是一些“虚方法”,他们不具有真正的方法内容,真正的方法内容都在D层呢。我们这样做的原因何在呢?我们为什么不直接调用D层的函数呢?为什么要通过接口调用呢?直接调用D层函数看着似乎更方便啊。

其实我们这么做的目的是为了降低耦合度。其实我们做到这里还不是能很好的理解什么"减少耦合度"之类的含义。我们慢慢的会发现我们现在第二遍做的机房收费系统较第一遍做的系统加了很多东西,不再是第一遍为了实现某些功能而实现功能,现在做系统更偏重于设计,更偏重于正规化、规范化,而且本着“全心全意为人民服务的理念”,我们不得不在设计系统时为以后的维护做提前准备。因此,我们由最初的简单实现到后来的用三层架构到后来的加Sqlhelper、加接口、加设计模式等等,都是为了降低各个层,各个模块之间的耦合性,为以后的维护或需求变更要进行更改时提供方便。我不知道我这样说你能不能听懂,这是我的理解而已,还有很多的不足之处,很多不正规的地方。我想说的是,暂时的我们要学会用接口,至于接口更深层次的内容我们会随着以后的深入学习更进一步的研究与加深。关于接口的内容我就介绍到这里,希望您能提出宝贵意见,我们共同进步!我们都走在学习的道路上,可能有很多前辈,很多大牛看到我们的博客的时候会提出很多修正意见,非常非常欢迎,我也会随着学习的深入不断的更正、修改我的博客。真诚的谢谢您能提出宝贵意见!

VB.NET<机房收费系统个人重构版>你都学会了什么(之五)的更多相关文章

  1. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  2. 小结:VB.NET机房收费系统个人版

    经过几天的缝缝补补,自己的个人版最终OK了,!或许是由于有第一次的机房收费系统的经验,这次做,感觉很亲切. 在业务逻辑方面,沿袭曾经的逻辑.做了一点升级.可是修改不大. 在数据库方面,感觉自己从一个小 ...

  3. VB.NET机房收费系统总结

    总感觉这次机房收费系统非常有份量,一直没有下手总结,从2014-7-27至2014-9-29.这中间有太多故事和成长.首先说一下两次机房收费系统的不同,它是我们从面向过程向面向对象的一个转变.在.NE ...

  4. vb.net机房收费系统之组合查询

    我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...

  5. 机房收费系统个人重构关于SQLHelper

    近期在敲机房,对于SQLHelper也是心里有些怵,由于原来没用过,可是看了一些博客和资料后发现,假设不用这个类,会大大添加代码量,并且,事实上它并不新,它是一个有多个关于数据库增删改查操作的语句函数 ...

  6. vb.net机房收费系统——存储过程

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xdd19910505/article/details/35574125 一.使用背景         ...

  7. 【vb.net机房收费系统】之sqlhelper 标签: 数据库 2015-05-17 10:47 819人阅读 评论(15)

    在敲机房收费重构版的时候,用到了sqlhelper,当时不知道怎么开始,各种听别人说,张晗说,一定要用sqlhelper,特别好用,我当时没有用balabala~当时一听,哎哎哎,这个高级,要搞一搞, ...

  8. 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集 标签: vb.net继承 2015-05-02 15:19 1012人阅读

    在敲到组合查询这个功能的时候,需要用到窗体的继承,但是在新建继承窗体的时候,出现了错误(没有包含要从继承的组件的已生成程序集).如下图: 问题的产生:当时没怎么注意,也不知道怎么弄的,最后反正是继承上 ...

  9. vb.net机房收费系统之配置文件

    总是听到说用反射+配置文件访问数据库,那配置文件到底什么东西? 1.定义: 配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置, ...

随机推荐

  1. 清华集训2014 day1 task3 奇数国

    题目 题目看起来好像很难的样子!其实不然,这是最简单的一道题. 算法 首先要注意的是: \(number \cdot x + product \cdot y = 1\) ,那么我们称\(number\ ...

  2. [置顶] 殊途同归——总结asp.net

    怀着期望,忐忑的心情看完了asp.net的一部分视频,这部分的学习也到了一个段落,颗粒归仓的工作还是要做的,但是有什么比一张图来得更直观有效呢? 先来张图,这次真的是有图有真相: 通过asp.net的 ...

  3. 第十一章 认识与学习BASH

    系统支持的shell在   /etc/shells里面 Bash Shell 的功能: 1.命令修补能力(histroy) 2.命令与档案补全功能 3.命令别名设定功能 4.工作前景背景控制 5.支持 ...

  4. PHP - 表单与验证

    第11章 表单与验证 学习要点: 1.Header()函数 2.接收及验证数据 我们对Web感兴趣,认为它有用的原因是其主要通过基于HTML的表单发布和收集信息的能力.这些表单用来鼓励网站的反馈.进行 ...

  5. Spring MVC 遇到的一点点问题(转)

    今天下午下班之前看了看凯歌给的Spring Training的教程的lab篇,我之前有跟着做没有遇到什么问题,但是到了跟Spring MVC integrating的时候,遇到一点点有趣的事情. 这个 ...

  6. MySQL存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试

    InnoDB和MyISAM简介 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写 ...

  7. android 打包 /${zipalign}&quot; error=2, No such file or directory

    当我更新完android L proview之后我的打包出问题了,报错/${zipalign}" error=2, No such file or directory 排查了一下午才知道 近 ...

  8. 关于innodb purge thread和master thread

    由innodb_purge_threads控制purge线程数. (>= 5.6.5)的版本号中该值默觉得1.最大值为32.默认值1表示innodb的purge操作被分离到purge线程中,ma ...

  9. Google 开源项目风格指南阅读笔记(C++版)

    虽说是编程风格指南,可是干货也不少,非常多C++的有用技术在里面. 头文件 通常每一个.cpp文件都相应一个.h文件:#define保护全部头文件都应该使用#define防止头文件被多重包括,为保证唯 ...

  10. 管理集群中的 crs 管理员

     管理集群中的 crs 管理员 oracle Managing CRS Administrators in the Cluster Use the following commands to ma ...