zoukankan      html  css  js  c++  java
  • Android复习之单例模式

           很多东西学的时候记得蛮好,很快就忘了,真实的运用到项目中也和简单的做个小demo又不一样。

           今天来复习一下单例模式。

           单例模式的目的是使得类的一个对象成为系统中的唯一实例,即保证对象唯一。

           单例模式实现思路:

        想要保证对象唯一

        1. 为了避免其他程序过多的建立该类对象.先禁止其他程序建立该类对象.

        2.还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象.

        3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式.

        代码实现:

        1. 将构造函数私有化.

        2. 在类中创建一个本类对象.

        3. 提供一个方法可以获取到该对象

        单例模式也有多种实现方式,最常见的就是懒汉式和饿汉式单例模式。

        具体实现代码如下:

     1 /**饿汉式: ( 开发时一般用这种)
     2 
     3 Single类一旦加载,内存就分配空间给对象s
     4 */
     5 public  class  single {
     6 
     7    //构造函数私有化
     8 
     9   private single (){}
    10 
    11   //创建本类对象(私有并静态常量化)
    12   
    13   private static final single s = new single();
    14 
    15   //可以在类中定义Set方法,但只能有唯一出口函数
    16 
    17   //获取该对象的方法
    18 
    19   public static single getInstance()
    20 
    21   {
    22 
    23       return s;
    24   
    25   }
    26 
    27   //无论声明多少不同名称的single对象, 其都是静态single对象s的引用 
    28 
    29 }
    30 
    31  
    32 /**
    33 懒汉式(延时加载)
    34 
    35 当方法被调用时才建立s对象
    36 
    37 面试问题:涉及多线程,单例模式和同步锁定synchronized关键字
    38 
    39 同步时的锁是:  single.class  表示该类所述的字节码文件对象
    40 */
    41 
    42 public  class  single {
    43 
    44     
    45 
    46     private  static   single s = null ;
    47 
    48  
    49 
    50     private single (){ }
    51 
    52  
    53 
    54     public static single getInstance()
    55 
    56     {
    57 
    58            if(s ==null)
    59 
    60       {  //解决效率问题
    61 
    62           Synchronized(single.class)
    63 
    64               {
    65 
    66                        if(s == null)
    67 
    68                           s = new single();
    69 
    70                }
    71 
    72         }
    73 
    74     return s;
    75 
    76     }
    80 }
    81 
    82  
  • 相关阅读:
    LeetCode-167-两数之和 II
    LeetCode-160-相交链表
    LeetCode-155-最小栈
    [leetcode]7. Reverse Integer反转整数
    [leetcode]4. Median of Two Sorted Arrays俩有序数组的中位数
    [leetcode]2. Add Two Numbers两数相加
    [leetcode]210. Course Schedule II课程表II
    Topological Sorting拓扑排序
    [leetcode]62. Unique Paths 不同路径(求路径和)
    [leetcode]387. First Unique Character in a String第一个不重复字母
  • 原文地址:https://www.cnblogs.com/mafangfang/p/5404420.html
Copyright © 2011-2022 走看看