写在前面的
- 四个字:一波三折
本来最开始就想着用C#来完成代码的编写,结果由于自己在项目开始的时候对C#的掌握不是很透彻,所以放弃了C#转由VB.NET编写。但是,写到一半的时候觉得非常的没意思,自己的收获非常少,所以呢就放弃了VB.NET又转到了C#的版本上来,经过一段时间的学习,逐渐学习和掌握了C#的一些方法和用处,感觉收获相比于之前要大多了,做起系统也带劲儿多了。下面就总结一下这段时间对C#版机房收费系统的理解。
三层+设计模式
- 在之前的一篇文章中也已经介绍了什么是程序的三层结构,这里也不在赘述。但是由于有些特殊情况的存在,仅仅只用三层框架还不能够完成真正意义上的解耦合,所以我们需要引入一些设计模式来达到这个目的。这里就用了抽象工厂加外观模式
抽象工厂
概念
- 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
UML图解
特点
由于在概念中涉及到了和接口依赖,所以抽象工厂可以灵活的切换产品,而不用违背开放封闭原则。
同时也减轻了客户端代码的“压力”,让创建过程和客户端解耦合。
外观模式
概念
- 为子系统中的一组几口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加爱容易使用。通俗的讲就是给子系统找一个统一的接口,我们通过接口来操纵子系统。
UML图解
特点
- 可以有效的让关系复杂的子系统与客户端以及其他“分离”,达到调用类与“Facade”解耦合,从而提高系统的运行效率。
结构效果
分层+解耦合
通过在UI层和BLL层之间的FACADE,让BLL层(由于该软件的限制,代码中的BLL层的内容也就是那么几类,设想如果是一个庞大的子系统群呢?FACADE可以轻松帮我们解决BLL层“复杂”相互联系)的数据返回极其简单的几个值,从而达到代码的简化。
通过在BLL层和DAL层之间添加抽象工厂模式和接口层,可以让我们非常方便的对数据库和数据源的内容进行转化,只需一行代码,就可以随时实现SQL和ACCESS以及其他各种不同的数据源之间的转化。
结构图
写在后面的
通过对C#版七层的理解(能力不够,以前C#版的理解不了),觉得确实比VB.NET要更加的简洁,类与类之间的调用完全都是OOP级别的,感觉非常的棒,自己在总结的过程中也收获了非常多的东西。我也会把这些收获在之后的文章中分享出来。
再有的就是DAL层中,对于SQLAssist的应用,也是搜集了很多种方法,根据自己的理解也会在下面的文章中分享出来。总之,C#版的个人重构真的让我收获颇多!