UpdateData muhtemelen bir 'service' sınıfına ait olması gereken bir mimari kokusu olduğunu düşünürdüm.
Verilerin bir elma olduğu yerler. AppleAdapter hizmet / iş zekası sınıfıdır. AppleService, geçerli yöntemin dışında bulunan bir AppleAdapter için bir Singleton başvurusudur.
private static volatile AppleAdapter _appleService = null;
private static object _appleServiceLock = new object();
private AppleAdapter AppleService
{
get
{
if (_appleService == null)
{
lock (_appleServiceLock)
{
if (_appleService == null)
_appleService = new AppleAdapter();
}
}
return _appleService;
}
}
public SomeAppleRelatedMethod(Apple apple)
{
AppleService.UpdateData(apple);
}
Yaptığınız şeyin mutlaka yanlış olduğunu düşünmüyorum, ancak SomeDataAdapter gerçekten bir tür vatansız iş hizmetini temsil ediyorsa, o zaman bir singleton bunun için en iyi yöntem olacaktır. Umarım yardımcı olur! Sağlanan örnek, hem boş hem de tam olarak aynı anda iki veya daha fazla iş parçacığına erişilirse, _appleService ile ilgili hiçbir tartışmayı sağlamanın süslü bir yoludur.
Biliyor musun? SomeDataAdapter bir ADO IDbDataAdapter (ki neredeyse kesinlikle), tüm bu yanıt dikkate almayın!
: P
Orijinal soruya yorum ekleme iznim yok, ancak bu kodun bulunduğu yeri belirtebiliyorsanız.
Bu kod özel bir IDbDataAdapter uygulamasını temsil ediyorsa ve UpdateData bir IDbConnection, IDbCommand oluşturuyor ve hepsini sahnelerin arkasına bağlıyorsa, o zaman hayır bir kod kokusu olarak düşünmüyorum çünkü şimdi akışlar ve diğer bunları kullanmayı bitirdiğimizde bertaraf edilmesi gereken şeyler.