Java Spring重要模式

单列模式:

public class A{
    private A(){};
    private static A a;
    public static A getA(){
      if(a == null){
         synchronized(A.class){
             if(a == null){
               a = new A();
            }
         }
      }
      return a;
    }
}

工厂模式:

public class Factory {
    private static Properties pro = new Properties();
    private static Map map = new HashMap();
    static{
       try {
          InputStreamin = Factory.class.getResourceAsStream("/info.txt");
          pro.load(in);
       }  catch (IOException e) {
          e.printStackTrace();
       }
    }

    public static Object getBean(String key){
       if(map.containsKey(key)){//判断map中是否存在键
          returnmap.get(key);
       }

       synchronized(map) {
         if(!map.containsKey(key)){
             StringclassPath = pro.getProperty(key);
             try {
                Class c =Class.forName(classPath);
                Object obj =c.newInstance();

                map.put(key,obj);
                returnobj;
             } catch(Exception e) {
               e.printStackTrace();
             }
          }
          else{
             returnmap.get(key);
          }
       }
       returnnull;
    }
}

代理模式:

public class DaoProxy implements InvocationHandler{
    private Object target;
    private static SessionFactory factory;
    static{
      Configuration cfg = new Configuration().configure();
      ServiceRegistry r = newServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
       factory =cfg.buildSessionFactory(r);
    }

    public DaoProxy(Object target){
       this.target= target;
    }
    public Object getProxy(){
       return Proxy.newProxyInstance(
            target.getClass().getClassLoader(),
            target.getClass().getInterfaces(), this);
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
          throwsThrowable {
       Sessionsession = factory.openSession();
       session.beginTransaction();

       Object returnObj = null;
       try{
         //得到目标对象的setSession方法对象
          Method m =target.getClass().getMethod("setSession", Session.class);
         //执行setSession(),完成session属性的初始化
         m.invoke(target, session);

         //执行目标对象的目标方法,得到执行方法后的返回值
         returnObj =method.invoke(target, args);

         session.getTransaction().commit();
      }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
      }finally{
         session.close();
      }
       returnreturnObj;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值