设计模式——抽象工厂模式

        之前敲完机房收费系统,但是由于电脑上装的是sqlserver2008,那一版的机房收费系统用的是这个数据库,但是到后来想换个安装比较简单的数据库,不用SqlServer,发现自己的机房基本运行不了了,大量的代码得更换,基本上就是要重敲机房,这可怎么办呢?

        之前有过经验和教训,这次学习了抽象工厂模式,就刚好解决了这个问题。

先简单的介绍下抽象工厂模式,抽象工厂模式基本上是讲数据库和代码之间解耦,我们就好更改和灵活变换数据库,更换要用的数据库时,我们只用改变一点代码就可以实现数据库的连接,这样大大减少了工作效率。下面我们来看下代码:

这个模式最重要的思想就是解除与具体数据库访问的耦合:

<pre name="code" class="csharp">     //Iuser接口,用于客户端访问,解除与具体数据库访问的耦合
   interface  Iuser
    {
       void insert(User user);
       User getuser(int id);
    }
//SqlserverUser类,用于访问sql server的user
 class sqlserveruser:Iuser 
    {
        public void insert(User user)
        {
            Console .WriteLine ("在sqlserver中给user表增加一条记录");
        }
        public User getuser(int id)
        {
            Console.WriteLine("在sql server中根据ID得到user表一条记录");
            return null;
        }
    }


 
 Ifacetory接口,定义一个创建访问User表的抽象的工厂接口 
 

<pre name="code" class="csharp">    interface  ifactory
    {
        Iuser createuser();
        idepartment createdepartment();
    }


 
 
客户端代码:

        static void Main(string[] args)
        {
           User  user = new User ();
            department  dept = new department();
            ifactory factory = new accessfactory  ();
           Iuser  iu = factory .createuser ();
           iu.insert (user);

           iu.getuser(1);
           idepartment id = factory.createdepartment();
           id.insert(dept);
           id.getdepartment(1);
           Console.Read();

        }



这样一来,如果我们更换数据库,只需要把  ifactory factory = new accessfactory  ();换成别的就可以啦!


 这部分的内容相对来说比较重要,因为在后期我们要完成的机房收费系统要用到这块的内容,学习不易,且学且珍惜!



你可能感兴趣的:(设计模式,C#,工厂模式,抽象工厂模式)