三层加抽象工厂加反射加配置文件加SqlHelper

本文详细介绍了三层架构的设计思路,包括包图、类图、时序图的使用,重点解析了SQLHelper的实现原理及其在代码复用中的作用,同时讨论了配置文件的重要性与反射机制的应用。通过实例讲解,帮助开发者更深入地掌握三层架构的核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

              三层的例子敲的差不多了,为了对抽象工厂有个更好的理解,开始对三层进行加工,下面来对三层进行逐步更新,首先是看一下我画的包图:

             

              包图为大家从宏观上展示了程序各层之间的调用关系,现在用类图展示一下详细的调用关系:

             

             通过包图和类图能够比较清晰的知道各个包之间的调用关系,通过时序,可以清晰的知道这些调用关系的顺序,我们在写代码的时候是从D层开始写的,当然没有那么绝对,只不过从D层出发,在写的过程中会有B层对D层的调用,有时候在写个层的时候需要先将大致的框架写出来。

             下面通过时序图从U层开始,从用户角度,将这个程序的执行顺序表示出来:

             

             下面看一下我设计的登录下例子:

             

                 在这个例子中我对sqlhelper有了更加深刻的理解,sqlhelper,是对所有sql语句(增删改查)的集合,因为在D层中会有很多类都会用到增删改查,而这些代码是重复的,这样会造成代码的冗余,于是就需要SQLHELPER来将这些方法总结一下,sqlhelper就是一些有关数据库的语句的有参、无参、有返回值、无返回值的函数的集合,当需要哪个函数的时候,我们只需要在D层调用这些方法,将自己需要的参数写进去就可以了,这样减少了代码重复。

                 而对于配置文件,在之前的博客中,我也提到过appsettings与connectstrings,为什么要用配置文件呢?一方面配置文件的使用可以减少源码的改动,只需要从txt文件中做改动就可以让程序的运行达到想要的效果,另一方面,它实现了解耦。

                 在这个程序中还用到了反射,在我的程序中是这样用的:

                 在工厂中用反射的时候首先要添加Reflection的引用,首先说明一下下面的代码:AssemblyName为程序集名,className为命名空间 .类名,一般情况程序集名和类名是一样的下,但是如果对命名空间名进行更改,你会发现生成的.dll的名称依旧是程序集名,所以就想问他俩有什么区别??

                程序集就是一个项目,多个项目构成一个解决方案,是物理的,将生成EXE以后可以看到到它的名字是程序集.dll,是可以看到的,而命名空间就相当于windows中的一个文件夹,只是这个文件夹中放的不是文件,而是类,它是逻辑的,看不到。

using System.Reflection;
  public  class DataAccess
    {      
        private static readonly string AssemblyName = "LoginDAL";
        public  IDAL.ISelectUser CreateSelectUser()
        {
            string className = AssemblyName + "." + "UserDAO";
           
            return (ISelectUser)Assembly.Load(AssemblyName).CreateInstance(className);
        }
        public  IUpdateScore CreateUpdateScore()
        {
            string className = AssemblyName + "." + "ScoreDAO";
            return (IUpdateScore)Assembly.Load(AssemblyName).CreateInstance(className);
        }
    }

                     关于三层,可以多多交流,还是理解的不够透彻,希望和大家分享!
 

             

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值