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

简介:

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

             

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

             

             通过包图和类图能够比较清晰的知道各个包之间的调用关系,通过时序,可以清晰的知道这些调用关系的顺序,我们在写代码的时候是从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);
        }
    }

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

             

相关文章
|
11月前
|
设计模式 Java 数据库
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
|
设计模式 Oracle 关系型数据库
简单工厂+反射+配置文件
简单工厂+反射+配置文件
85 0
简单工厂+反射+配置文件
|
uml
工厂模式+配置文件+反射实现数据访问程序
工厂模式+配置文件+反射实现数据访问程序
93 0
工厂模式+配置文件+反射实现数据访问程序
Java动态代理抽象成工具类
Java动态代理抽象成工具类