机房收费系统合作版(四)——泛型之解

************前言:

开篇起笔先问:“泛型是什么”?解:泛型是类型抽象类。作用是什么:“通过对类型的抽象,封装,大量减少我们的代码量”。

从开始学习面向对象,“抽象”一词就不断的在耳边重复。但是在没有做过项目之前,尤其是在没有尝试着用面向对象的思维去做项目之前,“抽象”在脑子里永远都是一个虚无缥缈的词儿。那么在具体的项目中,我们是如何一步一步地把“抽象”变得具体课件的呢?——继承,泛型……

************“泛型”与抽象的不解之缘:

  • 图一:没有使用框框架时的DAL层类图

注意:

①相同:该层类图存在大量的重复代码,类中的方法有90%的相似度

②不同:每个类的传入实体和返回实体个不同

  • 图二:使用OOFramework框架的DAL层类图(根据图三画的)

注意:

公共的方法抽象出来放到了RepositoryBaseDAL类中,并向外提供一个接口。每个具体的类有自己的接口,此例中是IUserDAL(此接口也是向外暴露的接口),便与扩充属于UserDAL类自身的方法。公共的方法则继承自RepositoryBaseDAL类。

参数是:T,Tcollection,就是我们今天的主角“泛型”。

使用此策略解决了图一中存在的问题。同时也为框架之路铺好了垫脚石。

  • 图三:DAL层整体架构图

************自解:

在学习泛型之初很是不理解泛型。也不能理解“对类型的抽象”的意思,不过通过一个项目的体验之后,现在可以大致的理解“泛型”。其实“泛型”所起的作用就跟抽象类,抽象方法所起的作用是一样的,只不过它是为了给类或方法后的括号里的东西来做抽象。

************好处:

①为不同对象提供服务:有了泛型,可是使相同的代码服务于不同的对象。

②抽象更加完善:没有泛型,我们只能抽象一些类,抽象方法,但是有了“泛型”,我们将传入的参数以及返回值都可以进行抽象。

③减少代码重复量:抽象能够减少大量的代码,“泛型”是抽象的一小部分,所以“泛型”必须学习。

④面向对象的必经之路:面向对象的三大要素基于抽象,而“泛型”是抽象的一小部分,所以“泛型”是面向对象的必经之路。

⑤架构之路的开始:要想做好架构,面向对象必须是必须掌握的,而“泛型”是衡量是否面向对象的一个重要标志。

************总结:

曾在《机房收费系统合作版(一)——框架搭建》中展示过该系统的架构,但是老师却在评论中写道:“

在这个系统中,没有看到你使用泛型啊!”当时不是很理解,老师为什么会说我没有用泛型,这次总结再返回去看那篇博客才知道,自己在框架图中忘了画泛型了。或许在当时看来只是忘了,但是现在看来,当初肯定不是忘了,而是根本就不理解泛型。现在将那篇博客的图纠正于此:

时间: 2024-10-13 08:01:05

机房收费系统合作版(四)——泛型之解的相关文章

机房收费系统合作版(七)——总结

历经许许多多的磨难机房收费系统合作版终于告一段落了.在机房收费系统中的收获我不能说自己收获的太少了.因为相比之前任何一个阶段的学习,这个阶段是我收获的最多,感悟最多的一个阶段. 技术: 初识框架,对它有一种莫名的好感,很是喜欢.也从这个好框架中感受到了自己的与XS,LSH他们的差距.他们是搭这个架构的人,而自己光是对这个架构的学习就整整花了一周.这就是显而易见的差距. 带着莫大的好奇心,和连海苦战两天,照猫画虎,也搭建了属于这个系统的"框架".为了练手,我俩还搭建了Jenkins.由于

机房收费系统合作版(一)——框架搭建

机房收费系统的合作版中首次尝试使用框架:三层 + Spring.NET +Nhibernet框架. 一.整体框架图如下: 二.三层架构图如下: DAL层: Adapter: 结构: 实现IRepositoryDAL接口:扩展 继承RepositoryBaseDAL父类:复用 功能: 操作类:封装基本的操作--增删改查 this.HibernateTemplate.Save(entity) this.HibernateTemplate.Delete(entity) this.HibernateTe

机房收费系统合作版——VS2013自带报表

机房收费系统已经敲过两次了,每次敲的感觉都不一样,收获也不一样. 第一次敲机房,主要是克服对代码的恐惧,只要将功能实现就行:而第二次,主要就是加入前期对整个系统的分析.设计,然后在实践中理解三层架构以及对设计模式的应用:现在是第三次敲,主要是锻炼我们团队合作的能力,大家的讨论研究,合作交流等.由此可见,我们走的每一步都很重要,都是必不可少的. 今天我们来说一说我们的vb.net中自带的报表. 一.报表的制作 1,我们右击U层所在文件夹添加"新建项". 2,在弹出的的添加新建项窗口中找到

项目总结——机房收费系统合作版

机房合作就结束了,这次合作开发是第一次与别人一块儿开发一个系统,收获还是蛮大的.以下我总结几点算是经验吧,供以后參考: 管理上 1.计划 在准备合作开发之前我们三个去找米老师,老师给我们规定了时间.半个月.尽管计划是组长制定的,但假设没 有一个明白的计划规定什么时间段干什么.面对绘图,文档,代码实现,调试等等,项目就不可能有条不紊的进行. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmd6aWppZWppYXlvdQ==/font/5a6L

机房收费系统合作版(三)——UI思索

案件追踪系统1.0暂告一段落.验收过程中,MR MI针对UI界面提出了许多自己的想法.针对TGB项目的UI设计我也有我的感受: 1.不论大小项目,只要一看界面准有70%到80%熟悉度. 2.一看这些项目,大概能够猜测到是同一伙儿做出来的. 3.只有我们开发人员(熟悉业务逻辑的人)知道下一步该做什么. *****惨遭嫌弃的UI******: 举个例子.感受最深的是当时的基础系统采集数据.数据采集时,正直2014年最炎热时,顶着硕大的高温来往于至善楼与数理楼之间.数据采集之初,想象的很美好:我们只是

机房收费系统合作版(五)——初识委托

委托是什么?你对委托熟悉吗?答案是肯定的!你对委托一定很熟悉!对委托的熟悉,正如你对一个倒立着的人一样熟悉!为什么这么说?因为方法的调用对于每一个学习过编程的人来说都很熟悉,而且是熟悉的不能再熟悉了!那么方法的调用和委托又有什么关系呢?其实委托就是将被动调用改为了主动服务. 委托其实就是一种思想的转变:由以前的被动调用方法转变为,主动服务于某个方法.将方法间的交互思维做了一个转变.学习过三层的人不难想象方法之间的调用关系吧,那么使用了委托之后他们方法之间的关系又是什么样的呢?(借用两张图展示一下

机房收费系统合作版(二)——初识Git

研究了一天半的Git.查阅了不少资料,这里将Git的运用分为两条线做个简单梳理:本地控制库.远程控制库. **************************************本地控制库********************************************* 本地库中须要用到几个工具,这里做简介. 图形化工具: msysgit: Git forWindows是Github官方的管理工具. 它的操作都是採用命令行的形式完毕的,所以可能更加适合习惯Linux命令行的人. Gi

机房收费系统合作版(五)——初识托付

托付是什么?你对托付熟悉吗?答案是肯定的!你对托付一定非常熟悉! 对托付的熟悉,正如你对一个倒立着的人一样熟悉!为什么这么说?由于方法的调用对于每个学习过编程的人来说都非常熟悉,并且是熟悉的不能再熟悉了!那么方法的调用和托付又有什么关系呢?事实上托付就是将被动调用改为了主动服务. 托付事实上就是一种思想的转变:由曾经的被动调用方法转变为,主动服务于某个方法.将方法间的交互思维做了一个转变.学习过三层的人不难想象方法之间的调用关系吧,那么使用了托付之后他们方法之间的关系又是什么样的呢?(借用两张图

机房收费系统VB版(一)——系统分析

      首先,我们先回答两个个问题:         1.机房收费系统"是什么"?         2.机房收费系统应该"干什么"?        我的回答:         1.机房收费系统顾名思义就是一个收费系统.         2.机房收费系统主要任务流程是:注册--充值--上机--下机--退卡.而其他的功能都是各个部分人员主要负责的功能.       然后,我们进一步分析一下这个系统的功能. 我们可以把这个系统比作网吧的收费系统,而它的主要面对对象是学