给你举个例:下面是一个DAO工厂类
public class DAOFactory {
public DAOFactory() {
}
static{
//给你举个例子 你查查PUT方法的具体用法 就清楚了
daoFactory.put(IUsersDAO.class.getName(),new UsersDAOImpl());
}
//DAO类的接口名,取得相应的DAO
public static Object getDAO(String interfaceName) {
return daoFactory.get(interfaceName);
}
}
//写了一个工厂类 主要是取得一些接口的 因为这样写性能 安全度都得到了提升
然后下面这是如何调用这个DAO 工厂类
IUserDAO userDAO= (UserDAO )DAOFactory.getDAO(IUserDAO.class.getName());
这样就取得了这个DAO
User user = new User("username","pwd","男");
public void deleteUser(User user) {
。。。 。。。
userDAO.delete(user);
。。。 。。。
}
我就随便举了个例子 你发现了没有 如果要删除一个用户名 只需调用接口就OK了
如果不调用接口 就是这样
userDAOImpl userImpl = new UserDAOImpl(); //这是一个接口实现类 不通过接口 直接调用
public void deleteUser(User user){
。。。 。。
userImpl.deleteUser(user);
。。。 。。
}
如果是这样的话 是不是就暴漏了 接口的实现类的相关方法 如果是黑客就有办法知道其它的方法 安全度就降低了 当着这只是其中一个原因 最重要的是低耦性 尽量使用接口去调用某个业务方法
希望对你有帮助
备注:UsersDAOImpl 是DAOUser 接口的实现类 new userDAOimpl()实例化这个类
instance是实例的意思把,建议学习下OOAD,其中有工厂设计模式。
就是用来创建这个DAOFactory,用静态实例化模式,只要创造一次,以后再调用时,不用再实例化。目的是为了能够减少系统的消耗。