单例模式的实现(java 和 Python)

没有那么多的废话直接上代码
java 使用enum 实现单例模式,该种方法要求jd>=1.5的版本

public interface Country{
          .................
}
public class China implements Country{
          .................
/**
*
*获取单例对象
*/
public static Country getInstance(){
        return China.Singleton.INSTANCE.getInstance();
} 

private enum Singleton{
        INSTANCE;

        private China singleton;

        //JVM会保证此方法绝对只调用一次
        Singleton(){
            singleton = new China ();
        }
        public China getInstance(){
            return singleton;
        }
    }
}

java 使用饿汉模式实现单例模式

public class China{  
    private static China instance = new China();  
    private China(){}  
    public static Singleton getInstance() {  
    return instance;  
    }  
}

python 实现单例模式

# -*- coding: utf-8 -*-
# python  从模块引入就是实现了单例模式
# 通过锁实现 主要是在初始化方法中有I/O操作就可能造成单例模式的失败

import threading


class Singleton(object):
    _instance_lock = threading.Lock()

    def __init__(self):
        pass

    def __new__(cls, *args, **kwargs):
        if not hasattr(Singleton, "_instance"):
            with Singleton._instance_lock:
                Singleton._instance = object.__new__(cls)
        return Singleton._instance

你可能感兴趣的:(单例模式的实现(java 和 Python))