大话设计模式读后感之工厂方法模式(DAO工厂)

本文介绍了DAO工厂模式在Java中的应用,通过单例模式创建DAO对象,实现降低耦合度的目的。文章提供了具体代码示例,并解释了如何通过反射机制动态创建不同类型的DAO对象。

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

工厂模式应该是每个JAVA初学者包括我在内最不陌生的一种设计模式,在学习简单的JDBC后,我们必然要对DAO工厂有所接触。

引入DAO层的主要目的是降低耦合度,将持久层与业务逻辑层分离,提高扩展和复用,也避免了之后更换持久层带来不必要的开销。

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类

既然都说到了DAO层我正好也复习下大笑,首先我们要明确DaoFactory是为了什么而存在的!? 

是为了创建我们所需要的JDBC对象而存在!

package dao;



import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
 * YBH
 * @author Administrator
 *
 */
public class DAOFactory {
	/*
	 * DAO工厂
	 */
	private	static DAOFactory Instance=null;

	/**
	 * 该例子使用了单例设计模式
	 * 步骤大概说下吧,
	 * 1、私有化构造器
	 * @return
	 */
	private DAOFactory(){
	
	}
	/**
	 * 2、提供公开的创建对象方法
	 * 3、创建静态对象DAOFactory
	 * 4、方法判断使他是同一个对象。
	 * @return
	 */
	public static DAOFactory getInstance(){
		if(Instance==null){
			Instance=new DAOFactory();
		}
		return Instance;	
	}
	
	public TestDAO createTestDAO(){
		
		return new TestDAOImpl();
	}
	
}

一个简单的工厂方法模式大概就是上面这个样子!

但是现实中你不可能只有一个Test表需要操作,如果你需要增加新的对象就要在DaoFactory新加方法,这样子就变得不够完美了。


/**
 * YBH
 * @author Administrator
 *
 */
public class DAOFactory {
	/*
	 * DAO工厂
	 */
	private	static DAOFactory Instance=null;

	/**
	 * 该例子使用了单例设计模式
	 * 步骤大概说下吧,
	 * 1、私有化构造器
	 * @return
	 */
	private DAOFactory(){
	
	}
	/**
	 * 2、提供公开的创建对象方法
	 * 3、创建静态对象DAOFactory
	 * 4、方法判断使他是同一个对象。
	 * @return
	 */
	public static DAOFactory getInstance(){
		if(Instance==null){
			Instance=new DAOFactory();
		}
		return Instance;	
	}
	
	/**
	 * 利用反射机制实现对象创建
	 * @param daoIndex daoimpl的地址如:dao.impl.UserDaoImpl  
	 * @return
	 */
	public  Object getDAO(String daoIndex) {
		Class<?> clazz;
		
		try {
			clazz = Class.forName(daoIndex);
			return clazz.newInstance();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}

大概就是这个样子吐舌头
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值