• 一天学一个模式_第四天:工厂模式


    商业理念:
      工厂模式将数据层与代理层分开。将细节 分开, 角色分开 、 你只需传入你想要的东西,他会自动给你生成。
      如果你想看到细节就必须 传入方法。
      工厂模式 . 其方法 (传入 反射的IDAO 返回 (IDAO)). 使用 IAO findAll () 方法。
      反射就是要得到类和方法的本身。

    案例布局:
           ①建立工厂
      /**
       * <b>类描述:</b>DAO工厂 <br>
       * <b>邮件:</b> yiyu1@163.com <br>
       * @author wonter 
       */
      public class DAOFactory {
          private DAOFactory(){
          //空构造 防止被其他类new
          }
          public static IDAO getInstance(Class clazz) throws InstantiationException, IllegalAccessException{
       //newInstance() 反射出原型的所有方法属性。
       return (IDAO)clazz.newInstance();
          }
      }
            ②延用第二天所学代理模式,使用代理类调用工厂
             /**
                    * <b>类描述:</b>查询UserDAO(用户)表全部信息 findAll(所有用户)<br>
       * <b>邮件:</b> yiyu1@163.com <br>
       * @author wonter 
      */
      //先import java.util.List;不说了,只讲重点。
      public List findAll(){
       List list=null;
        try {
         if(list==null)
         //以上都不重要,关键就下面这一句话!什么意思呢?
         //DAOFactory       :①中刚定义的DAO工厂;
         //getInstance() :工厂中其方法;
         //UserDAO.class   :用户表所有方法与属性.class 反射原型 ,就是要得到类和方法的本身。
         //findAll()         :注意的是,它不是工厂的方法。它是通过工厂创造(反射)出来的UserDAO的方法。
                                        向findAll()传入参数。
         list = DAOFactory.getInstance(UserDAO.class).findAll(FINDALL, User.class);
         return list;
        } catch (Exception e){
         e.printStackTrace();
        }
       return null;
      }
        ③ 接下来就是要被反射的UserDAO这个类,其findAll方法。
              /*
              *<b>类描述:</b> CompanyDAO的具体实现类  每一个DAO可以实现一个DAOAdapter适配器,也可以直接实现I**DAO。这看实现是否完全。 如果实现不全面,直接实现适配器继承接口。
       * <b>邮件:</b> yiyu1@163.com <br>
       * @author wonter 
       */
      public class UserDAO extends DAOAdapter implements IUserDAO {
       public UserDAO() {
        //空构造 防止被其他类new
       }
       /**
        * 查询全部  要使用该方法要求重写根接口的子接口(I***DAO)
        * @param SQL sql查询语句
        * @return 返回该查询的结果集List
        * @throws CRMDBConnException
        * @throws CRMSQLException
        */
       public List findAll(String SQL, Class clazz) throws CRMDBConnException,
         CRMSQLException {
        try {
                // 关于DAOUtil 就不是今天要讲的内容了。你只要知道DAOUtil是传参与数据库连接就行了!
         return DAOUtil.getInstance().findAll(SQL, clazz);  
        } catch (Exception e) {
         e.printStackTrace();
        }
        return null;
       }
      }

  • 相关阅读:
    At least one JAR was scanned for TLDs yet contained no TLDs
    {转} MJPG流媒体在HTML5的呈现方案
    {转}理解HTTP/304响应
    blueimp,预览遮罩范围控制
    快速生成mysql上百万条测试数据
    mysql插入文本文档及读取
    tomcat启动报错:注释指定的bean类.与现有的冲突.相同的名称和类
    csv的文件excel打开长数字后面位变0的解决方法
    UNIX或LINUX时间戳转时间
    Myeclipse更新SVNStatusSubscriber 时报告了错误。1 中的 0 个资源已经同步。
  • 原文地址:https://www.cnblogs.com/Javame/p/2158079.html
Copyright © 2020-2023  润新知