单例对象和多例对象

单例对象和多例对象

单例对象:对于所有的请求都是同一个对象去处理,相当于静态代码,只加载一次,使用多次

单例模式分为两种:

  • 懒汉模式:当一个单例模式的类进行加载的时候并不会创建这个这个对象。只有当用到这个类的时候才会去创建这个对象。

    • class Singleton01{
         private static Singleton01  modle = new Singleton01();//声明对象同时私有化
         private Singleton01(){}//构造函数私有化
         public static Singleton01 getInstance(){//向外声明访问该类对象的方法
             return modle;
         }
      }
      
      
  • 饿汉模式:当类加载的时候直接创建这个对象,不管是否会用到。

    • class Singleton02 {
         private static Singleton02 modle = null;//声明对象,不实例化
         private Singleton02()  {}//构造函数私有化
         public static Singleton02 getInstance(){//向外提供访问该类对象的方法
             if (modle == null)
                 modle = new Singleton02();
                 return modle;
         }
      }
      
      

多例对象:多次请求创建对个对象进行业务处理

单例对象和多例对象的优缺点:

单例:

  1. 同一个对象进行处理,降低了内存资源的消耗。
  2. 单例模式可以让我们只创建一个对象从而避免了频繁创建对象导致的内存消耗和垃圾回收。
  3. 在饿汉模式下的单例模式需要注意线程安全问题,因为饿汉式在类加载时就会将单例对象创建好,而饿汉式在类加载时不会第一时间创建这个对象。所以在线程并发的情况下可能会创建多个不同的对象

多例:

  1. 会占用较多的内存
  2. 但是不会发生线程安全问题。当多个线程争抢同一资源时会发生线程安全问题。

可能使用的地方:

  1. 三层架构的服务层和持久层对数据进行处理时候,没有什么变化的,可以使用单例模式
  2. Servlet是单例模式,我们只需要创建一个Servlet,然后接收请求并处理。
  3. spring的bean默认也是单例模式,springMVC是单例模式,所以我们可以发现我们的service层,dao层,web层都是使用单例模式,单例无处不在。
  4. Struts框架的action类因为每个用户都有不同的用户名密码等等所以需要用多例模式。
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值