ホームページ  >  記事  >  バックエンド開発  >  JavaとPythonのシングルトンパターンの違い

JavaとPythonのシングルトンパターンの違い

零到壹度
零到壹度オリジナル
2018-04-19 16:14:351530ブラウズ

この記事の例では、Java と Python のシングルトン パターンの違いについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

シングルケース モード

シングルケース モードは、一般的に使用されるソフトウェア設計パターンです。そのコア構造には、シングルトンと呼ばれる特別なクラスが 1 つだけ含まれています。シングルトン パターンでは、システム内にクラスのインスタンスが 1 つだけ存在することが保証されます。つまり、クラスにはオブジェクト インスタンスが 1 つだけあります。

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
E

の例では、クラスのインスタンスをクラス属性 __instance に保存します。クラス属性が NONE ではなくなると、__New__ を呼び出すのではなく、

_instance を直接返します。さらに、毎回 test() を呼び出すのを避けるために、__firstinit のクラス属性を導入します。実行結果:

<__main__.Test object at 0x000002507FF6E1D0>
<__main__.Test object at 0x000002507FF6E1D0>
が同じであることを証明できます。物体。


関連する推奨事項:


シングルトンパターンを実装する6つの方法

シングルトンパターンとマルチケースパターンの概要

シングルトンパターン分析

Javaシングルトンパターン

以上がJavaとPythonのシングルトンパターンの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。