Refaktoryzacja klasy

0

W kodzie nad którym pracuję jest jedna gigantyczna klasa którą postanowiłem przebudować. Ta klasa to coś w rodzaju dostawcy danych, ma dużo metod w rodzaju getCustomer, getProduct, getDocument itp. Podzieliłem ją tematycznie na mniejsze klasy tak że powstała np klasa CustomerDataProvider i w niej metody dotyczące klientów. Każda z takich klas dziedziczy po starej klasie DataProvider, gdzie zostały metody wspólne.
Zastanawiam się jak zrobić jakąś fabrykę tych klas. Póki co mam tyle zmiennych instancyjnych ile jest tych nowych klas, zmienne te są inicjowane w miarę potrzeb, czyli chcemy dane klienta, odpala się metoda getCustomerProvider który inicjalizuje zmienną _customerProvider.
Nie bardzo widzę jak to zrobić inaczej, a może tak jest dobrze? Może ktoś ma lepszy pomysł na to?

1

Dependency Injection?

0

To też brałem pod uwagę tyle tylko że te klasy są zupełnie od siebie różne, mają różne metody, wspólnych metod jest tylko kilka w klasie nadrzędnej z której one dziedziczą. Nic mi tutaj nie pasuje.

0

Poniżej przykład klasy z DI w C# z wykorzystaniem AutoFac

public class ComponentStatusPoller
{
        private readonly IServiceClient _client;
        private readonly IComponentsProvider _componentsProvider;
        private readonly IEventAggregator _eventAggregator;
        private readonly IComponentContext _containerComponentContext;

        public ComponentStatusPoller(
            IServiceClient client,
            IComponentsProvider componentsProvider,
            IEventAggregator eventAggregator,
            IComponentContext containerComponentContext)
        {
            _client = client;
            _componentsProvider = componentsProvider;
            _eventAggregator = eventAggregator;
            _containerComponentContext = containerComponentContext;
        }
}

Wszystkie te zależności są wstrzykiwane przez konstruktor.

EDIT:

To też brałem pod uwagę tyle tylko że te klasy są zupełnie od siebie różne, mają różne metody, wspólnych metod jest tylko kilka w klasie nadrzędnej z której one dziedziczą. Nic mi tutaj nie pasuje.

Ale co to ma do rzeczy? Powinny implementować własne interfejsy, albo możesz zażądać instancji konkretnej klasy (przynajmniej w AutoFac).

1 użytkowników online, w tym zalogowanych: 0, gości: 1