2015-05-12 9 views
5

To jest bardziej pytanie projektowe.Klasa podstawowa dla wielu klas w różnych projektach

Obecnie mam wiele klas (w różnych projektach), które mają różne role, ale istnieje jedna powszechna metoda, która wykonuje to samo zadanie. Myślałem o posiadaniu klasy bazowej dla wszystkich klas tez, aby każdy z nich mógł odziedziczyć tę klasę i wdrożyć tę metodę, aby zaoszczędzić duplikację.

Moje pytanie brzmi: czy powinienem mieć jedną klasę bazową dla wszystkich klas, które są w wielu projektach, czy też powinienem mieć jedną klasę bazową na projekt?

Dzięki,

+0

W takich przypadkach bardzo istotne jest to, którego ide używasz. Podaj nam informacje :) – laurisvr

+0

Jeśli klasy bazowe byłyby identyczne, z pewnością nie powinieneś duplikować kodu w każdym projekcie. – CoryKramer

+0

@laurisvr VS2013 – CodersSC

Odpowiedz

3

Chciałbym zdefiniować interfejs, który zawiera tę jedną wspólną metodę. Wówczas umieściłbym ten interfejs w jego własnym projekcie. Następnie masz konkretne implementacje odwołujące się do tego projektu i implementujące interfejs.

Coś takiego ..

  • Repositories.proj
    • IRepository
  • EntityFrameworkImpl.proj
    • Repozytorium: IRepository
  • NHibern ateImpl.proj
    • Repozytorium: IRepository
+0

ta struktura będzie strukturą, do której się zastosuję i użyje statycznej biblioteki dla interfejsu. – CodersSC

3

W ogólnym 1 klasy dla wszystkich projektów jest dużo lepiej niż tworzenie tę samą klasę dla każdego projektu.

Właściwie ośmielę się powiedzieć, że prawie w każdym przypadku, wykorzystuję ten sam kod, zamiast go kopiować. Zawsze lepiej

W ogólności biblioteki statyczne są najlepszym narzędziem do rozwiązania problemu, przed którym obecnie stoisz.

EDIT:

Jeśli pracujesz w visual studio chciałbym rozwiązać ten problem w następujący sposób. Utwórz projekt zawierający deklarację i definicję klasy podstawowej. Te projekty powinny być typu biblioteki statycznej.

Pozostałe projekty powinny zawierać katalog zawierający plik nagłówkowy w katalogach integracji. I katalog zawierający plik lib w dodatkowych katalogach zależności.

+0

Tak, postawiłem moją klasę podstawową w statycznej lib ... ma sens. – CodersSC