图解登录

简介: 小引: 之前看别人的博客,总听大家说着,我们一直强调的“七层”并不存在,实际上是三层+设计模式+反射和配置文件。自己调试和运行了之后,也渐渐的有了新的感觉:所谓的层,就是将函数归类。设计模式,是我们归类的依据,因为有的函数放在两个层可能都合适,但是设计模式会告诉我们放在哪里更好,能更好的解耦和。反射+工厂,主要是用在了数据库的访问中,解决了数据库访问时的可维护性和可扩展性的问题。用反射可以去除switch和if,解决了分支判断的耦合。

小引:

  之前看别人的博客,总听大家说着,我们一直强调的“七层”并不存在,实际上是三层+设计模式+反射和配置文件。自己调试和运行了之后,也渐渐的有了新的感觉:所谓的层,就是将函数归类。设计模式,是我们归类的依据,因为有的函数放在两个层可能都合适,但是设计模式会告诉我们放在哪里更好,能更好的解耦和。反射+工厂,主要是用在了数据库的访问中,解决了数据库访问时的可维护性和可扩展性的问题。用反射可以去除switch和if,解决了分支判断的耦合。    


图说结构:

刚上手准备实现登录时,真是各种郁闷各种痛啊!所以果断决定先照着其他同学的代码实现登录,以后的功能在自己理解的基础上实现,在这里就不展示copy来的代码了,用图说说我对登录的理解:



20160313210143260.png


1、UI

  UI中存放与做简单的和显示有关的判断函数,这些判断可以在后面封装到模块中;

2、BLL

  BLL中主要是接收接口从临时数据内存中查到的信息,有判断函数;

3、DAL

  DAL中存放具体的查询数据库语句;


4、Facade——外观模式

  解B层和U层之间的耦合,从UI调用BLL的函数要先经过Facade。这让我想到了《大话设计模式》中讲的牛市股票的例子:将B层的很多的判断函数便是我们的各种股票和房地产和国债,Facade类库就是增加的基金类。Facade需要了解B层中所有对象的方法和属性,它就是一个高层借口,使外界更容易使用B层中的对象。

5、Factory——工厂类和IDAL——接口类

  在工厂类库中我们添加了对配置文件和反射的使用,在接口类中添加了对反射的使用。这两个解除了B层和D层的耦合。依赖倒转,B层不直接依赖于D层而是和D层共同依赖于接口。通过反射的使用,连接数据库,通过更改反射中的字符串可以更换数据库,符合开放-封闭原则。借用《大话设计模式》中的一句话就是:“将程序由编译时转为进行时”,灵活多变。

6、Entity——实体类

  在图中我们可以看出,实体类被“万箭穿心”的一类。实体层中,为用户在数据库中的信息定义属性,在其他层调用时可以“  .  ”出来。实体类与数据库中的UserInfo对应,我们每实例化一个实体类,在数据库中便有了一个对象,实体类便是将代码和数据库查询信息连接的桥梁。

   图中的“外部”是我们引用的VS已经封装好的类中的函数。

值在函数中的传递过程:



20160313210324183.png



小结:

   拖拉了一周,今天终于实现重构登录了,虽然比起一些同学来学习的很慢吧,但是一想到收获了很多还是很开心的,比如对里面的结构理得差不多了,学会了用里面的工具,更重要的是认识到了滚动学习的重要性,果然那种“似曾相识”的感觉给人印象最深。同时,也发现了为什么自己以前写的博客总是感觉那么“浅”,因为探索的不够,探索的太浅。当自己写完一篇博客,能感动自己的时候,也就是自己想要的“深”的时候。

   以上是我对《机房收费系统个人重构》登录的理解,对于里面的错误,希望大家不吝指出,帮帮我这个菜鸟,提前谢过。























相关文章
|
负载均衡 算法 5G
m基于5G通信的超密集网络多连接负载均衡和资源分配算法matlab仿真
m基于5G通信的超密集网络多连接负载均衡和资源分配算法matlab仿真
498 4
|
算法 Java 关系型数据库
2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天
不说太多废话,但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了,在外包一呆就呆了整整2年多,直到现在才从外包离开,如今拿到阿里的offer准备入职了。
|
存储 SQL 前端开发
瑞吉外卖精华部分总结(1)
瑞吉外卖精华部分总结(1)
464 0
|
弹性计算
阿里云服务器“带宽计费模式”是什么意思?
阿里云服务器“带宽计费模式”是什么意思?阿里云服务器带宽计费模式分为“按固定带宽”和“按使用流量”,有什么区别?按固定带宽是指直接购买多少M带宽,比如1M、5M、10M、100M等,阿里云直接分配用户所购买的带宽值,根据带宽大小先付费再使用;按使用流量是先设置一个带宽峰值,然后根据实际公网产生的出流量来计算费用,先使用后付费
|
运维 持续交付 云计算
云计算中的基础设施自动化:IaC(基础设施即代码)的崛起与实践
云计算中的基础设施自动化:IaC(基础设施即代码)的崛起与实践
|
存储 Web App开发 iOS开发
Electron 从基础到实战笔记 - Electron App对象及其事件
Electron 从基础到实战笔记 - Electron App对象及其事件
531 0
|
分布式计算 NoSQL Java
大数据学习资料和书籍推荐
大数据学习资料和书籍推荐
443 0
|
SQL Oracle 关系型数据库
[已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
[已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
|
存储 安全 前端开发
message“: “CSRF token mismatch
message“: “CSRF token mismatch
851 0
|
存储 缓存 前端开发
layui框架实战案例(3):layui上传错误请求上传接口出现异常解决方案
layui框架实战案例(3):layui上传错误请求上传接口出现异常解决方案
1351 0

热门文章

最新文章