一天学一个模式_第四天:工厂模式
商业理念:
工厂模式将数据层与代理层分开。将细节 分开, 角色分开 、 你只需传入你想要的东西,他会自动给你生成。
如果你想看到细节就必须 传入方法。
工厂模式 . 其方法 (传入 反射的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;
}
}
加微信:wonter 发送:技术Q
医疗微信群:
加微信:wonter 发送:医疗Q
更多文章关注公众号:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】