![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Na potrzeby pewnego projektu, zacząłem pisać system uploadu, donwloadu plików oraz w tym samym systemie tworzenie katalogów i ich przeglądanie, usuwanie katalogów i plików oraz inne pomniejsze funkcje. Chodzi o to, że nie wiem jak to dobrze ubrać w klasy i jak sobie proadzić z zależnościami pomiędzy nimi.
Do tej pory powstało mi kilka różnych klas, przykładowo: Path, Upload, Download, File, MimeTypes itp. Ogólnie, do tej pory działałem na jednej klasie głównej, która w konstruktorze brała jako swój patrametr tablicę z nazwami, i odpowiednie klasy były tworzone pod pola głównej klasy. Zrobiłem tak, żeby nie marnować zasobów, po co mi 6 klas, skoro korzystam tylko z jednej? Chcąc załadować nowa klasę, tworzę pole klasy głównej (FileSystem), i zapisuję nową instancje klasy do tego pola. W dalszej części sktyptu korzystam z nowej klasy, odnosząc się do odpowiedniego pola klasy głównej. Ale co zrobić, jak klasa Download będzie potrzebowała dostepu do metody lub właściwości klasy Path? W takim przypadku musiałbym tworzyć nowy obiekt (drugi) klasy Path by go wykorzystać w klasie Download - a drugi, bo pierwszy obiekt tej klasy został już utworzony w klasie głównej, i istnieje pod odpowiednim polem. Teraz pytanie: Jak to wszystko zgrabnie ogarnąć? Jak utworzyć odpowiednie zależności pomiędzy klasami? Zrobić główna klase, lub każdą, stosując singleton (chciałbym tego uniknąć)? Proszę o jakieś sugestie, ewentualnie linki lub, jeśli ktoś miał z podobnym problemem do czynienia - jakies wskazówki, jak to rozwiązać. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Dzięki by_ikar, linki mi sie przydadzą na pewno, ale wydaje mi się, że źle zrozumieliście mój problem. Nie chodzi mi o to, żeby operacje na plikach (czysto na plikach, dodawanie, usuwanie, przenoszenie, CHMOD itd), ubrać w klasy, ale, żeby rozwiązać zaleśności pomiędzy nimi. Żeby zrobić mały system, który będzie nimi zarządzał. Żeby każda klasa miała dostęp do innej, lub tylko niektóre, żeby miały dostęp do tych, które potrzebują.
Nie mogę dać dziedziczenia, bo co ma wspólnego klasa Path z klasą Download? Prawie nic. Na razie rozwiązałem to w ten sposób, że w głównej klasie tworze nowe pola a w nich instancje moich osobnych klas, i z tych pól głównej klasy mam dostęp do innych klas. Ale jak rozwiązać to, że mniejsza klasa potrzebuje wartości z właściwości innej mniejszej klasy? Albo potrzebuje sprawdzić, czy ścieżka dostepu do pliku, nie zawiera znaku '../'? Chyba, że napiszę całkowicie odrębny system w mojej głównej klasie, i zdefiniuję, jaka podrzędna klasa, korzysta z innyj, i w tedy, jak będę ją ładował, to załaduje też tą wymaganą. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 19:35 |