Before, I continue on how to implement these 3 based classes in ur , let me first show you how the getInstance() code that utilise reflction will look like look like.
public static DAOFactory getInstance(String className)
Class clsDAOFactory = Class.forName(className);
DAOFactory daoFactory = (DAOFactory) clsDAOFactory.newInstance();
throw new DAOException(cnfe.getMessage());
throw new DAOException(ie.getMessage());
throw new DAOException(iae.getMessage());
The className in the code refer to the class name of your concrete implementation of DAO Factory.
As you can see, Java reflection can be very simple and yet powerful. It is a good investment to spend some time to explore this.
Why I do not show the code of the getDAO() method as well? Good question, because that is just a abstract method that to be implement by yourself. (Sorry for my simple class diagram do not show that.)