黑马程序员_java 单例设计模式

------- android培训java培训、期待与您交流! ----------

以下仅为个人平时学习笔记,可能有有错误的地方,希望有看到者提出来,共同讨论,谢谢!

1.设计模式:解决某一类问题最行之有效的方法。

2.java中常见有23种设计模式:抽象工厂模式、适配器模式、桥梁模式、建造模式、责任链模式、
命令模式、合成模式、门面模式、工厂方法、享元模式、解释器模式、迭代模式、调停者模式、
备忘录模式、观察者模式、原始模型模式、装饰模式、策略模式、代理模式、单例模式、状态模式、
模板模式、访问者模式。


3.单例设计模式:解决一个类在内存中只存在一个对象。

4.想要保证对象唯一:
  a.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象.
  b.还为了让其他程序可以访问该类对象,只好在本类中自定义一个对象.
  c.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式.

5.实现对象唯一的代码体现:
  a.将构造函数私有化.
  b.在类中创建一个本类对象.
  c.提供一个方法可以获取到该对象.

6.什么时候用单例设计模式:
  a.对于事物该怎么描述还是怎么描述.
  b.当需要将该事物的对象保证在内存中唯一时,就使用单例设计模式.

****************************单例设计模式代码示例**************************
1.饿汉式。
  这个是先初始化对象。类一加载进内存就建立了Single的对象。
  class Single
  {
    private static Single s = new Single();
    private Single(){}
    public static Single getInstance()
    {
      return s;
    }
  }


2.懒汉式。
  对象是getInstance()方法被调用时,才初始化建立对象,也叫做对象的延时加载。
  class Single
  {
    private static Single s = null;
    private Single(){}
    public static Single getInstance()
    {
      if(s==null)
      {
s=new Single();
      }
      return s;
    }
  }


**注意:
    1. 开发一般用饿汉式,因为安全、简单。(建议使用)
    2.而懒汉式当多人同时调用getInstance()方法时候,就会出现问题(生成对象不唯一)。此时为了避免此种问题getInstance()方法
    要定义为public static synchronized Single getInstance()。但是如此的话就会降低程序的执行效率。
    还有一种解决办法就是采用双重判断:(这样要比饿汉式多判断一次,代码也要稍微复杂一些)
    public static Single getInstance()
    {
      if(s==null)
      {
        synchronized(Single.class);
        if(s==null)
        {
 s=new Single();
        }
      }
      return s;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值