用比较通俗的方式解释一下,最好带例子,主要怎么用工厂模式
解决方案 »
- 请教如何通过 snmp4j 对mib里面的table增加一行
- 求一条复杂的SQL语句 来人 围观!(昨天已经有人答复了 但是有一点问题 求赐教)
- struts1.x问题
- 请问哪位朋友有JRE1.6呀?
- 请教一个多对多的问题,头都大了
- 问一个数据库基础问题。。
- 我的tomcat死掉了,我在catalina.out里面看不出什么原因来,谢谢关注。。。
- 编写第一个EJB程序出现的问题,菜鸟求助
- 请教选课算法?有100分啊!
- 高手门,求求你们帮我看看这些j2ee的名词都是写什么呀!!!!!!求死你门啦!!我没分了,否则给200分!!
- 关于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());
}
}