zoukankan      html  css  js  c++  java
  • 单例设计

    1.单例设计Singleton的引出

       单例设计,从名字上首先可以看出单---即只有一个,例---只的是实例化对象;那么单例也就是说一个类,只产生了一个实例化对象。但是我们都知道,一个类要产生实例化对象很容易,只需要通过new关键字,new出来就可以了,怎么可能一个类只产生一个实例化对象呢,其实试想想,实例化对象的产生有一条必经之路,那就是构造方法。

       什么是构造方法,构造方法是类进行实例化对象的必经之路,只有通过构造方法,才能为类的成员进行初始化,并开辟相应的堆空间进行存储。那么接着上面的来说,一个类要只产生一个实例化对象,那就必须控制这个构造方法,如何做?  如果我们将这个构造方法用private关键字修饰起来,也就说构造方法私有化,那么在这个类的外部就无法来new出实例化对象了,那就产生了一个类只有一个实例化对象了。具体代码如何实现呢,单例设计模式可分为:恶汉方式的单例设计模式

    package com.huawei.madejin.demo;
      
      class Singleton
      {
          private final static Singleton INSTANCE = new Singleton();//实例化对象
          private Singleton(){}//私有的方法
          
          public static Singleton getInstance()
          {
             return INSTANCE;
         }
         
         public void print()
         {
             System.out.println("Hello World");
         }
         
     }
     public class SingletonTest {
     
         /**
          * @param args
          */
         public static void main(String[] args) {
             // TODO Auto-generated method stub
             Singleton s = Singleton.getInstance();
            s.print();
         }
     
     }

      第二种被称为懒汉方式的设计模式:


    package com.huawei.madejin.demo; 

    class Singleton 

    //private final static Singleton INSTANCE = new Singleton(); 
    private static Singleton INSTANCE = null; 
    private Singleton(){} 

    public static Singleton getInstance() 

    if(INSTANCE == null) 

    INSTANCE = new Singleton();; 

    return INSTANCE; 


    public void print() 

    System.out.println("Hello World"); 



    public class SingletonTest { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Singleton s = Singleton.getInstance(); 
    s.print(); 




    改进的设计如下:

    package com.huawei.madejin.demo; 

    class Color 

    private String title; 

    private final static Color RED = new Color("red"); 
    private final static Color BLUE = new Color("blue"); 
    private final static Color GREEN = new Color("green"); 

    public static Color getColor(int i) 

    switch(i) 

    default: 
    case 0 : 
    return RED; 
    case 1: 
    return BLUE; 
    case 2: 
    return GREEN; 


    private Color(String title){ 
    this.title = title; 


    public String toString(){ 
    return this.title; 



    public class MultitonTest { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Color c= Color.getColor(1); 
    System.out.println(c.toString()); 






  • 相关阅读:
    3.13 获取位置
    团队博客(三)
    团队博客(二)
    团队博客(一)
    Android抽奖
    声网实现视频会议(二)
    声网实现视频会议(一)
    Android弹幕实现原理
    人月神话 胸有成竹
    Android的弹幕功能实现(四)
  • 原文地址:https://www.cnblogs.com/zxy-come-on/p/12767961.html
Copyright © 2011-2022 走看看