用比较通俗的方式解释一下,最好带例子,主要怎么用工厂模式
解决方案 »
- structs 验证出错。
- SSH 框架中 Model层需要注入吗
- 大家帮看一下,一个小错误。 InvocationTargetException
- hibernate如何管理主表用唯一键关联子表的应用
- 能否用struts+hibernate代替struts+spring+hibernate呢?
- 请问下用DELPHI可不可以连J2EE?
- 请问使用Jdom如何读取大文件XML(超过100M)?
- linux系统tomcat服务器如何识别中文?
- JNDI找不到,可能是什么原因?......急救!~
- 如何在Jbuilder外面部署Jbuilder开发出来的EJB和web application?
- 关于spring和hibernate整合的问题急!!
- 请问怎么调用class文件
参考
public List<Student> findAll(){....}
public void add(Student student){.....}
}public class TeacherDAO {
public List<Teacher> findAll(){....}
public void add(Teacher teacher){.....}
}-----------------------------------
public class DAOFactory { public StudentDAO getStudentDAO(){
return new StudentDAO();
} public TeacherDAO getTeacherDAO(){
return new TeacherDAOHibernate();
}
}public class Demo{
public static void main(String args[]){
// 使用DAO工厂
Student std = new Student("sam","boy",20);
DAOFactory.getStudentDAO().add(std); //不是用DAO工厂
Teacher tea = new Teacher("lily","girl",18);
TeacherDAO teaDAO = new TeacherDAO();
teaDAO.add(tea);
}
}现在这里只有2个DAO 假如数据库有很多个表,有很多个DAO , 你需要记忆很多个DAO名字,
使用工厂类,DAOFactroy 你完全不用记忆,用代码提示,看名称或备注就知道。同时也提高开发效率。
//魔法系列对象工场magic
public class MagicFactory{
private static magicFactory magic=null; //工场的够构造均为私有
private MagicFactory(){
}
//获取工场实例
public magicFactory newInstance(){
if(magic==null){
magic=new magicFactory();
return magic;
}
return magic;
} //根据实体魔法工厂获取具体魔法对象
public magicFactory createMagic(class c){
return new c.newInstance();
} } //火系魔法工厂
public class FireMagicFactory extends MagicFactory(){
//构造为私有
private FireMagicFactory(){} //相关信息
public String toString(){
return "火系魔法生产成功..";
} } //冰系魔法工厂
public class IceMagicFactory extends MagicFactory(){
//工厂构造为私有
private IceMagicFactory (){} //相关信息
public String toString(){
return "冰系魔法生产成功..";
} } //魔法测试类
public class MagicText(){
public static void main(String args[]){
MagicFactory mf=MagicFactory.newInstance();
FireMagicFactory fireMagic=mf.createMagic(FireMagicFactory.class);
IceMagicFactory iceMagic=mf.createMagic(IceMagicFactory.class);
System.out.println(fireMagic.toString());
System.out.println(iceMagic.toString());
}
}