`
bingzhen66
  • 浏览: 36195 次
文章分类
社区版块
存档分类
最新评论

16.黑马程序员-设计模式-单例

 
阅读更多

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

1.设计模式:
  • 在建筑领域有设计模式,为了提高建筑速度,总结一些规律,形成模式。
  • 软件当中解决问题行之有效的方法,融合优化,成为设计模式。
  • 一共23种通用设计模式。
  • 设计模式不是代码而是纯偏思想
  • 多个设计模式融合成为框架。
2.单例设计模式
  • 作用:解决一个类在内存中只存在一个对象。
  • 方法
    • 为了避免其他程序过多创建改了对象,先禁止其他程序建立该类对象。
      • 私有构造函数。
    • 还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
      • 在类中创建一个私有静态本类对象。
    • 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
      • 提供一个私有静态方法可以获取到该对象
      • 单例不需要set,只有get方法。
    • 对于事物该怎么描述,还怎么描述,当需要将该事物的对象在内存中唯一时,将以上三步加上即可。
    • 对应代码:
      • 饿汉式
      • class Single
      • {
        • private Single(){}//私有的构造方法
        • private static single s=new single();//构造一个私有的本类对象,因为对象私有,要建立对象必须使用静态的getInstance方法,这时 该对象也需要static
        • public static single getInstance();//一个外部可以获得该类对象的方法,首先必须public外部才能访问。再次因为不能创建该类对象,必须静态该方法才能使外部使用类名.方法来调用该对象。
        • {
          • return s;
        • }
      • }
        • class
        • {
          • public static void main(String [] args)
          • Single ss=Single.getInstance();
        • }
      • 方法区中的静态对象引用指向了堆内存中的对象实体。
      • 重复调用getInstance方法,都是使用了方法区中静态对象引用,而该引用指向的对象只有一个。不能重新建立,这样就保证了对象的唯一性。

  • 单例设计模式二
    • 懒汉式
    • class Single
      • private static single s=null;
      • private Single(){}
      • public static Single getInstance()
      • {
        • if (s==null)
          • s=new Single();
        • return s;
      • }
    • class
    • {
      • public static void main(String [] args)
      • Single ss=Single.getInstance();
    • }
    • 懒汉式和饿汉式的区别:
      • 饿汉式,Single类已经内存,就创建好了对象。
      • 懒汉式是延迟加载,Single对象指向空,调用getInstance方法时,才建立对象。
      • 开发时使用的是饿汉式,因为安全,简单。
      • 懒汉就是一开始太懒不建立对象。饿汉式先建立对象再说。
      • 懒汉式在多线程同时调用方法时,线程间快速切换,会在产生对象前产生异常。
    • 面试题:如何解决懒汉式线程同步出错的问题







分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics