ホームページ > Java > &#&はじめる > Javaのシングルトンパターンとは何ですか?利点は何ですか?

Javaのシングルトンパターンとは何ですか?利点は何ですか?

王林
リリース: 2019-11-25 15:01:23
転載
3649 人が閲覧しました

Javaのシングルトンパターンとは何ですか?利点は何ですか?

1. シングルトン パターンとは

シングルトン パターン (Singleton Pattern) は、Java の最も単純な設計パターンの 1 つです。シングルトン パターンは次のとおりです。プログラムの実行中、一部のクラスは最大 1 つのインスタンス オブジェクトを持ちます。このパターンには、単一のオブジェクトのみが作成されるようにしながら、独自のオブジェクトの作成を担当する単一のクラスが含まれます。このクラスは、クラスのオブジェクトをインスタンス化することなく、その固有のオブジェクトに直接アクセスする方法を提供します。

推奨 Java 関連ビデオ チュートリアル: java コース

2. シングルトン モードの実装アイデア

1. 静的インスタンス オブジェクト、インスタンス オブジェクトと Class オブジェクトを相互にバインドさせ、Class クラス オブジェクトを通じて直接アクセスできます;

2. プライベート構築メソッド。構築メソッドを通じて複数のインスタンスの作成を禁止します;

3. このクラスの唯一のインスタンスを返すパブリック静的メソッドを提供します。

3. シングルトン モードの長所と短所

利点:

1. メモリ内にインスタンスが 1 つだけあるため、メモリのオーバーヘッドが軽減されます。 、特にインスタンスは頻繁に作成および破棄されます。

2. リソースの複数の占有を避けます。

欠点:

インターフェイスがないため継承できないため、単一責任の原則と矛盾します。クラスは内部ロジックのみを考慮すべきであり、外部でインスタンスを作成する方法は考慮すべきではありません。

4. シングルトン モードのいくつかの異なる記述方法

1. 怠け者スタイル

package com.yx.singleton;
 
/**
 * Singleton
 * <p>初级原型-懒汉式</>
 * <p>优点:用到时再初始化</>
 * <p>缺点:并发下会产生多个实例</>
 * <p>不推荐</>
 *
 * @author yx
 * @date 2019/11/24 12:18
 */
public class Singleton {
 
    /**
     * 静态化实例对象
     */
    private static Singleton sInstance = null;
 
    /**
     * 私有构造方法
     */
    private Singleton() {
    }
 
    /**
     * 提供一个公共的静态方法, 用来返回这个类的唯一实例.
     *
     * @return 单例对象
     */
    public static Singleton getInstance() {
        if (sInstance == null) {
            sInstance = new Singleton();
        }
        return sInstance;
    }
}
ログイン後にコピー

上記の記述方法は、同時実行環境では、複数のインスタンスが発生し、スレッドは安全ではありません。

列挙メソッド

/**
 * EnumSingleton
 * 枚举类单例模式
 *
 * <p>优点:不需要考虑序列化的问题;不需要考虑反射的问题</>
 * <p>缺点:所有的属性都必须在创建时指定, 也就意味着不能延迟加载; 并且使用枚举时占用的内存比静态变量的2倍还多</>
 *
 * @author yx
 * @date 2019/11/24 15:09
 */
public enum EnumSingleton {
    INSTANCE
}
ログイン後にコピー

その他の関連記事については、次のリンクを参照してください: Java 入門学習

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

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート