이 문서의 예에서는 Java와 Python의 싱글톤 패턴 간의 차이점을 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
싱글 케이스 모드
싱글톤 모드는 일반적으로 사용되는 소프트웨어 디자인 패턴입니다. 핵심 구조에는 싱글톤이라는 특수 클래스가 하나만 포함되어 있습니다. 싱글톤 패턴은 시스템에 클래스의 인스턴스가 하나만 있도록 보장합니다. 즉, 클래스에는 객체 인스턴스가 하나만 있습니다.
/** * 单例模式 * 懒汉式 * 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; } }
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!