设计模式 - - - 从单例模式谈起

来源:互联网 发布:ubuntu 14.04 镜像 编辑:程序博客网 时间:2024/04/27 18:10

面试中和工作中经常能遇到单例模式的相关问题:在这里总结一下单例模式。

1,什么是单例模式?

  • 单例模式就是在整个系统运行的过程中某一个类只有一个实例对象,实现这种方式的方法就称为单例模式。
  • Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”

2,为什么要有单例模式?

  • 单例模式的存在原因是一些实例如果在系统中存在多份实例的话,会引发问题,如产生序列号的实例,如果存在多份的话,序列号产生就会出现错误。
  • 如果系统中只存在一份实例的话 整个系统的开销比较小。

3,单例模式的特点:

  • 系统中只存在一份实例
  • 实例对整个系统易于访问。

4,单例模式的优点

  • 实例控制:单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
  • 灵活性:因为类控制了实例化过程,所以类可以灵活更改实例化过程

5,单例模式的缺点

  • 虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。
  • 可能的开发混淆:使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

7,单例模式的三种实现方式:

public class Singleton{   private static Singleton singletonInstence=null;   //这句话很关键   private Singleton(){   }   public static synchronized Singleton  getInstence()  {   if(singletonInstence==null){     singletonInstence = new Singleton();   }   return singletonInstence;   }}public  class  Singleton(){ private static Singleton SingletonInstence                                 = new Singleton();private  Singleton(){}private static Singleton   getInstance(){   return SingletonInstence;}} 1,最优写法  双锁模式class Singleton(){  private static Singleton SingletonInstence = null;  private Singleton(){}  public staitc synchrnized Singleton                                  getSingletonInstence(){       synchronized(Singleton.class){           if(SingletonInstence = null) {                 SingletonInstence = new Singleton();           }       }return SingletonInstence ;  }}

对设计模式感情兴趣的朋友可以加群:255453635 下载设计模式的相关资料,此外群里还有java spring 前端 数据库 nosql 并发编程、多线程编程等java方面的资料。请添加信息注明:CSDN

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 滴滴顺风车被永久封禁怎么办 三岁宝宝智力发育迟缓怎么办 学车体检听力没过怎么办 学车体检听力不过关怎么办 离职体检发现听力有问题怎么办 买的二手房土地证没过户怎么办 b2扣了9分怎么办 上海网约车车证怎么办 b2驾照累计12分怎么办 c1本扣满12分怎么办 太原公共自行车丢了怎么办 在太原出租车丢了东西怎么办 太原社保卡丢了怎么办 太原铁路医保卡丢了怎么办 学车体检视力不合格怎么办 换驾照色弱被拒怎么办 在上海考驾照贵怎么办 驾驶证有效期过了半年怎么办 资格证脱审2年了怎么办 换驾驶证时眼睛近视了怎么办 违章累计扣12分怎么办 一个违章扣12分怎么办 a1驾照扣3分怎么办 a1驾照扣12分怎么办 吃了毓婷哺乳了怎么办 吃了毓婷后出血怎么办 吃金毓婷喝了水怎么办 白带浓稠浆糊样怎么办 驾校学费不给退怎么办 b1驾证扣了9分怎么办 机动车登记证丢了怎么办 b1驾照扣了9分怎么办 听力正常体检不过关怎么办 做完人流第二天同房了怎么办 医院的票据丢了怎么办 体检人体成分(脂肪缺乏)该怎么办 诊断出右下叶肺炎怎么办 做胸透穿钢圈内衣怎么办 预约不上留学体检怎么办 跨省离职后社保怎么办 开车到成都限号怎么办