Quindi la mia classe manager fa 2 cose, carica elementi da file e da un articolo a un thread che lo richiede, contiene anche l'elenco che conterrà tutti gli elementi.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Bot.Core.MainEntryPoint
{
class ItemManager
{
private static List<string> ItemsList = new List<string>();
private static int Pos = 0;
private static object LockObject = new object(); // multiple threads would be accessing this at the same time
public static void LoadFromFile()
{
ItemsList = File.ReadAllLines("PATH TO FILE").ToList();
}
public static string GetOneItem()
{
string result = "";
if (List.Count > 0)
{
lock (LockObject)
{
if (Pos > ItemsList.Count - 1)
{
Pos = 0;
}
result = ItemsList[Pos];
Pos++;
}
}
return result;
}
}
}
Ora secondo me questo viola il principio della singola responsabilità e non allo stesso tempo (sembra essere relativo a chi lo usa)
Ho provato ad avere una classe ItemLoader, una classe ItemGiver, ma poi non riesco a capire da dove caricare o recuperare gli elementi, che "ItemsList" deve essere da qualche parte.