设计模式-简单工厂模式
来源:互联网 发布:nodetype js 编辑:程序博客网 时间:2024/06/05 15:37
简单工厂模式
《一:普通简单工厂》
建立一个工厂类,对实现了同一接口的一些类进行实例的创建,例:
//迷你版public class sendFactory{ public sender product(String type){ if("mail".equals(type) ){ return new MailSender(); }else if("sms".equals(type){ return new SmsSender(type); } } }
//加强版,在DAO操作中常用package cn.itcast.cd.oa.factory;import java.util.HashMap;import java.util.Map;import java.util.Properties;import cn.itcast.cd.oa.utils.CommUtils;/** * dao的工厂函数 */@SuppressWarnings("all")public class DaoFactory { //dao缓存 private static Map<String, Object> daoMap = new HashMap(); private DaoFactory() { } //获取工厂类实例 public static DaoFactory newInstance() { return new DaoFactory(); } /** * 1.判断缓存中是否存在dao * 1.1 存在: 直接取出返回 * 1.2 不存在 * 2.1:得到属性文件对象 * 2.2:得到dao名称 * 2.3:通过反射创建dao对象并放入缓存 * 1.3:从缓存中取出dao并返回. */ //根据传进去的类的类型决定返回时什么类型对象,解耦合 public <T> T getDao(String daoName, Class<T> requiredType) { Properties p = null; try { if(!daoMap.containsKey(daoName) ){ p = CommUtils.newInstance().getProperties(); String className = p.getProperty(daoName); T obj = (T) Class.forName(className).newInstance(); if(!requiredType.isInstance(obj) ){ throw new RuntimeException(obj + "的类型不是" + requiredType); } daoMap.put(daoName, obj); } return (T) daoMap.get(daoName); } catch (Exception e) { e.printStackTrace(); } return null; }}
《多个方法的简单工厂》
例:
public class sendFactory{ public sender produceMail(){ return new MailSender(); } public sender produceSms(){ return new SmsSender(); }}
《多个静态方法的简单工厂》
将多个方法的简单工厂改成是static,此时直接调用方法无需实例化对象。
阅读全文
0 0
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式------------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 设计模式---------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 300.31输出随机验证码图片
- 学习教程管理
- <meta name="viewport">移动端设置详解
- scrollview实现两条信息展示,单条信息轮播
- 数据结构与算法之线性表
- 设计模式-简单工厂模式
- Codeforces Gym F. Performance Review (树状数组 + DFS 序)
- emmm小游戏 Construct
- 【阈值优化+背包】51Nod1597[有限背包计数问题]题解
- erlang无图形界面的linux下如何使用observer:start(). --- ★firecat推荐★
- (M)Dynamic Programming:300. Longest Increasing Subsequence
- Java高并发秒杀API(四)之高并发优化
- 硬件电路设计基础:三极管(2)
- JS 中给easyui一列添加按钮