当前位置:编程学习 > JAVA >>

Java Dao工厂设计模式

这里简要说明Java中的分层设计思想。如下图所示:

将功能的实现分在两层进行,访问层和业务层。

(1)设计IDao接口

[java] 
package web.java.xml.model; 
 
public interface IDao { 
    public void create(); 

package web.java.xml.model;

public interface IDao {
 public void create();
}
(2)设计接口实现类DaoJdbc

[java] 
package web.java.xml.model; 
 
public class DaoJdbc implements IDao { 
 
    @Override 
    public void create() { 
        System.out.println("DaoJdbc::create()"); 
    } 
 

package web.java.xml.model;

public class DaoJdbc implements IDao {

 @Override
 public void create() {
  System.out.println("DaoJdbc::create()");
 }

}

(3)设计接口实现类DaoHibernate

[java]
package web.java.xml.model; 
 
public class DaoHibernate implements IDao { 
 
    @Override 
    public void create() { 
        System.out.println("DaoHibernate::create()"); 
    } 
 

package web.java.xml.model;

public class DaoHibernate implements IDao {

 @Override
 public void create() {
  System.out.println("DaoHibernate::create()");
 }

}
(4)设计单例工厂

[java]
package web.java.xml.model; 
 
/**
 * 单例的Dao工厂:
 * 单例模式的特点:
 * (1)单例类只能有一个实例
 * (2)单例类必须自己给自己创建一个唯一的实例
 * (3)单例类必须给所有其他对象提供这一实例
 */ 
public class DaoFactory { 
    //1.私有化构造函数,不能让外界进行对象创建  
    private DaoFactory(){} 
     
    //2.这个类必须自动向整个系统提供这个实例对象  
    public static DaoFactory getDaoFactory(){ 
        if(daoFactory==null){ 
            daoFactory = new DaoFactory(); 
        } 
        return daoFactory; 
    } 
     
    //3.单例类必须执行创建  
    private static DaoFactory daoFactory; 
     
    public IDao getDao(){ 
        //项目总根据需求对这里的内容进行修改,决定工厂提供什么样的产品  
        return new DaoJdbc(); 
    } 

package web.java.xml.model;

/**
 * 单例的Dao工厂:
 * 单例模式的特点:
 * (1)单例类只能有一个实例
 * (2)单例类必须自己给自己创建一个唯一的实例
 * (3)单例类必须给所有其他对象提供这一实例
 */
public class DaoFactory {
 //1.私有化构造函数,不能让外界进行对象创建
 private DaoFactory(){}
 
 //2.这个类必须自动向整个系统提供这个实例对象
 public static DaoFactory getDaoFactory(){
  if(daoFactory==null){
   daoFactory = new DaoFactory();
  }
  return daoFactory;
 }
 
 //3.单例类必须执行创建
 private static DaoFactory daoFactory;
 
 public IDao getDao(){
  //项目总根据需求对这里的内容进行修改,决定工厂提供什么样的产品
  return new DaoJdbc();
 }
}

(5)设计业务层

[java] 
package web.java.xml.model; 
 
/**
 * 业务层
 *
 */ 
public class Service { 
    public void create(){ 
        DaoFactory daoFactory = DaoFactory.getDaoFactory(); 
        IDao iDao = daoFactory.getDao(); 
        iDao.create(); 
    } 

package web.java.xml.model;

/**
 * 业务层
 *
 */
public class Service {
 public void create(){
  DaoFactory daoFactory = DaoFactory.getDaoFactory();
  IDao iDao = daoFactory.getDao();
  iDao.create();
 }
}
业务层功能的实现,依赖于工厂向外提供产品。工厂的实现又依赖于下面数据访问层代码。使用分层设计思想,有助于代码的细化,便于后期的更新与维护。

 

(6)编写测试函数

[java]
package web.java.xml.model; 
 
public class Demo1 { 
    public static void main(String[] args) { 
        Service ser = new Service(); 
        ser.create(); 
    } 

package web.java.xml.model;

public class Demo1 {
 public static void main(String[] args) {
  Service ser = new Service();
  ser.create();
 }
}
显然,这里想要什么产品的话,只需要在工厂中修改相应的代码即可。


 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,