Я искал шаблон, который мог бы предоставить как поточно-безопасную, так и небезопасную версию одного и того же класса.Технические аспекты этого довольно очевидны.Я предполагаю, что надеялся найти соглашения об именах / доступе и т. Д. *
Так что я нахожу этот шаблон повсюду в пространстве имен '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 и т. д. Я понимаю наследование.Но зачем делать это закрытым вложенным классом и заставлять пользователя перепрыгивать через обруч, чтобы добраться до него?Есть ли какая-то польза от этого?