用比较通俗的方式解释一下,最好带例子,主要怎么用工厂模式

解决方案 »

  1.   

    http://www.cnblogs.com/starstroll/archive/2008/01/31/1060352.html
    参考
      

  2.   

    比如DAOFactorypublic class StudentDAO {
        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 你完全不用记忆,用代码提示,看名称或备注就知道。同时也提高开发效率。
      

  3.   

    工厂模式指:为客户提供一系列此功能相关的对象进行操作........例子:游戏中的魔法magic:我们把魔法系列看成一个对象,但魔法是不是又分为冰系,火系,土系等等......那根据不同系的魔法,独有自己的伤害,施法时间等....各式各样的属性和行为............那不同系的魔法是不是都应该出自魔法系列这对象,那有程序表示的话:
          //魔法系列对象工场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());
             }
         }