Java와 Python의 싱글턴 패턴 차이점

零到壹度
풀어 주다: 2018-04-19 16:14:35
원래의
1497명이 탐색했습니다.

이 문서의 예에서는 Java와 Python의 싱글톤 패턴 간의 차이점을 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

싱글 케이스 모드

싱글톤 모드는 일반적으로 사용되는 소프트웨어 디자인 패턴입니다. 핵심 구조에는 싱글톤이라는 특수 클래스가 하나만 포함되어 있습니다. 싱글톤 패턴은 시스템에 클래스의 인스턴스가 하나만 있도록 보장합니다. 즉, 클래스에는 객체 인스턴스가 하나만 있습니다.

1. Java의 싱글톤 패턴

/**
 * 单例模式 
 * 懒汉式 
 *  1)、构造器私有化 
 *  2)、声明私有的静态属性 
 *  3)、对外提供访问属性的静态方法,确保该对象存在
 */
public class SingleCase {

	private static SingleCase sc = null;

	private SingleCase() {
	}

	public static SingleCase getSingleCase() {

		if (sc == null) {
			return new SingleCase();
		}

		return sc;

	}
}

/**
 * 单利模式 
 * 饿汉式
 *  1)、构造器私有化
 *  2)、声明私有的静态属性,同时创建该对象 
 *  3)、对外提供访问属性的静态方法
 * 
 */
class SingleCase01 {
	private static SingleCase01 sc = new SingleCase01();

	private SingleCase01() {
	}

	public static SingleCase01 getSingleCase() {
		return sc;
	}
}
/**	
*	饿汉式
*
*	类在使用的时候加载 ,延缓加载时间
*/
class SingleCase02 {
	
	private static class innerclass{  //内部类
		private static SingleCase02 sc = new SingleCase02();
	}
	
	private SingleCase02() {}

	public static SingleCase02 getSingleCase() {
		return innerclass.sc;
	}
}
로그인 후 복사

2. Python의 싱글톤 패턴

PS: 저는 오랫동안 Python을 배웠기 때문에 복습할 시간이 없었습니다. 혹시라도 실수가 있으면 독자 여러분께 부탁드립니다. 그들을 지적할 것입니다.式 싱글 모드를 구성합니다. 建 위의

class Test(object):
    __instance = None
    __firstinit = 1

    def __new__(cls, *args, **kwargs):
        if Test.__instance == None:
            Test.__instance = object.__new__(cls, *args, **kwargs)
        return Test.__instance

    def __init__(self):
        if not Test.__firstinit:
            return
        Test.__firstinit = 0

if __name__ == "__main__":
    a = Test()
    b = Test()
    print a
    print b
로그인 후 복사

클래스의 인스턴스를 클래스 속성 __instance에 저장합니다. 클래스 속성이 NONE이 아니면 __New__를 호출하지 않고 직접

_instance로 돌아갑니다. 또한 매번 test() 호출을 피하기 위해 인스턴스 초기화가 다시 실행됩니다. __firstinit의 클래스 속성을 도입합니다. 실행 결과:

<__main__.Test object at 0x000002507FF6E1D0>
<__main__.Test object at 0x000002507FF6E1D0>
로그인 후 복사
동일한 값은 동일한 개체임을 증명할 수 있습니다. ㅋㅋㅋ 싱글턴 패턴 분석


java 싱글턴 패턴

위 내용은 Java와 Python의 싱글턴 패턴 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!