图解抽象工厂,简单理解

具体说明项目需求,如果不知道客户使用哪种数据库,我们能用简单工厂实现,这里就用sqlserver和oracle为例,当然还可以加上其他数据库

图一:共5个项目,没包括应用层

        

图二:IDAL是接口层,定义需要要实现的方法,具体实现由SqlServerDAL和OracleDAL实现

   SqlServerDAL和OracleDAL都引用IDAL

 

        

图三:导入命名空间IDAL,继承接口层对于的类,并实现接口(有快捷键)

     这里以sqlserver为例,具体方法的实现就不写了,oracle同理

        

图四:现在我们可以创建抽象类了,引用IDAL,OracleDAL,SqlServerDAL

       

图五:导入命名空间IDAL,首先创建抽象产品

    抽象产品:就是IDAL接口类中的所有接口类(图二),命名规则以下图为例

       

图六:创建两具体工厂(图四),这里以sqlserver为例,oracle同理

       

图七:导入命名空间SqlServerDAL(如为oracle则导入命名空间OracleDAL),并继承抽象类AbstractFactory

   实现抽象类AbstractFactory,是什么类就实现什么产品(SqlServerDAL中的类)

      

图八:以上七图抽象工厂就建好了,那还有问题就是如何知道客户用的哪个数据库呢

  处理方法是,一般把选择的东西放在配置文件中,我们创建<appSettings>

         

图九:既然数据库已经确定,我们就在抽象工厂AbstractFactory判断选择的哪个数据库

   在刚刚创建抽象产品的下面创建选择具体工厂(图四中的两个工厂类)的方法

      

      

图十:在业务逻辑层调用,引用AbstractFactory和IDAL

      

图十一:导入命名空间AbstractFactory和IDAL

      我们就拿AdminManager业务类分析

  导入AbstractFactory和IDAL,创建抽象工厂,命名factory ,注意:此处一定要有static修饰,要不然调用不到下面的方法

  为了抽象工厂的使用,所有抽象工厂中选择具体的工厂的方法也是用static修饰的

  现在我们就直接能用factory调用到我们想要的数据库类了(它会直接通过配置文件中填入的DBType的值选择相应的数据库实例)

  具体实现代码跟没有抽象工厂的写法一样,此处就不写了

     

posted @ 2012-06-08 17:58  起苏桃子  Views(175)  Comments(0)    收藏  举报