1

進化のためにソースコードを分析したい。このコードでは、この同じクラスの同じタイプの属性タイプであるクラスがあります。

この開発の機能がわかりません。コンパイラは問題ありませんが、このコードには無限参照がありますか?

例:

public sealed class CachingServiceLocator : IDisposable
{

    private Hashtable cache; /// Le cache des références vers les services métiers
    private static volatile CachingServiceLocator me; /// L'unique instance du Service Locator

    /// Le constructeur statique
    static CachingServiceLocator()
    {
        try
        {
            me = new CachingServiceLocator();
        }
        catch (Exception)
        {
            MessageBox.Show("Impossible de créer le service locator...\nVeuillez accepter toutes nos excuses pour le désagrément occasionné..." , "Service Locator !", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

この展開を理解してください。

4

1 に答える 1

2

これはシングルトン パターンの古典的な実装です。このようにして、このクラスタイプに対して1つのオブジェクトのみが作成されることが保証されます(たとえば、ロガー、構成クラスは通常シングルトンになります)

この型のインスタンス コンストラクターはプライベートでなければならない、それ自体が封印されているクラスなど、おそらく見逃していることが他にもあります。

だからあなたはこれを行うことはできません

CachingServiceLocator  obj = new CachingServiceLocator() //not allowed

//to get the instance you have to do as following
CachingServiceLocator obj = CachingServiceLocator.me

シングルトン パターン

于 2012-06-28T13:16:07.463 に答える