Refaktoryzacja klasy

Odpowiedz Nowy wątek
2016-06-30 13:25
Złoty Krawiec
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?

Pozostało 580 znaków

2016-06-30 13:42
1

Dependency Injection?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2016-06-30 14:30
Złoty Krawiec
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.

Pozostało 580 znaków

2016-06-30 14:37
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).

edytowany 2x, ostatnio: Sarrus, 2016-06-30 14:39

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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