Ho Client che utilizza un Connection usa e getta per parlare con un servizio remoto. Un Connection è alquanto costoso da configurare e deve essere Dispose () d correttamente.
Voglio consentire più metodi in Client per condividere una connessione, come questa:
using (client._connection = client.Connect())
{
client.SyncTime();
client.UpdateUsers();
client.SomeOtherOperation();
}
Ma non voglio insistere sui consumatori di Client che gestiscono le connessioni. Dovrebbero essere autorizzati a chiamare singoli singoli metodi Client senza essere a conoscenza o preoccupati di Connection s.
Ecco lo schema che sto usando al momento. Fa piangere SRP. Qualche suggerimento su come posso fare meglio, o dovrei farlo affatto?
public class Client
{
Connection _connection;
public void SyncTime()
{
bool wasConnected = _connection == null;
try
{
if (!wasConnected)
_connection = Connect();
_connection.ActuallyDoSomeWork();
...
}
finally
{
if (!wasConnected)
_connection.Dispose()
}
}
}