В чем преимущество этого шаблона .Net

Я искал шаблон, чтобы обеспечить как поточно-безопасную, так и небезопасную версию одного и того же класса. Технические аспекты этого довольно очевидны. Я предполагаю, что надеялся найти соглашения об именах / доступе и т. Д.

Итак, я нахожу этот шаблон повсюду в пространстве имен 'Systems.Collections':

public class WhatEv
{
    private class SyncWhatEv : WhatEv
    {
        // overrides IsSyncronized = true
        // overrides whatever else to make it thread safe
    }

    public virtual bool IsSynchronized
    {
        get { return false; }  
    } 

    public static WhatEv Synchronized(WhatEv whatEv)
    {
        return new SyncWhatEv(whatEv);
    }
}

Есть несколько классов, реализующих это: HashTable, Queue, ArrayList, Stack и т. Д. Я понимаю наследование. Но зачем делать его частным вложенным классом и заставлять пользователя прыгать через обруч, чтобы добраться до него? Есть ли преимущества в использовании этого способа?

5
задан TBone 15 April 2011 в 14:08
поделиться