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()
}
}
}