Я вважав би це запахом архітектури в тому, що UpdateData, ймовірно, повинен належати до класу "service".
Де дані - Apple. Там, де AppleAdapter - сервіс / бізнес-розвідувальний клас. Якщо AppleService - це посилання Singleton на AppleAdapter, що існує поза поточного методу.
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);
}
Я не думаю, що ви робите неправильно обов'язково, але якщо SomeDataAdapter справді представляє якусь службу без громадянства, то одиночка буде найкращою практикою для цього. Сподіваюся, що це допомагає! Наведений приклад - фантастичний спосіб забезпечити відсутність суперечок _appleService, якщо воно сталося як нульовим, так і доступ до них в один і той же час двома або більше потоками.
Знаєш, що? Якщо SomeDataAdapter є ADO IDbDataAdapter (що це майже напевно є), ігноруйте всю цю відповідь!
: P
Я не маю дозволу додавати коментар до оригінального запитання, але якщо ви могли вказати, де існує цей код.
Якщо цей код являє собою власну реалізацію IDbDataAdapter, а UpdateData створює IDbConnection, IDbCommand і з'єднує все це за кадром, то ні, я б не вважав це запахом коду, тому що зараз ми говоримо про потоки та інші речі, які потрібно утилізувати, коли ми закінчимо їх використання.