Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jedno zadanie jeden obiekt. Czyżby?
coomler
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 26.06.2010

Ostrzeżenie: (10%)
X----


Cześć,
ostatnio postanowiłem poćwiczyć sobie programowanie obiektowe. Na tym forum zdążyłem już wiele razy przeczytać, że jeden obiekt = jedno zadanie. Przejdźmy do rzeczy. Mam jakieś archiwum a w nim kilka plików .txt. Teraz chcę napisać skrypt, który rozpakuje to archiwum i zmieni rozszerzenie plików z .txt na .html, po czym spakuje je. Jak zrobić to, aby było poprawnie? Osobna klasa do rozpakowywanie i pakowania i osobna do zmiany rozszerzenia? Czy w takim wypadku klasa stosować dziedziczenie? Może macie inne, lepsze, bardziej poprawne rozwiązania? Rozumiem, że lepiej nie pakować tego do jednej klasy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
coomler
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 26.06.2010

Ostrzeżenie: (10%)
X----


Cytat
Zrób klasę Archiver, która będzie realizowała operacje extract i pack. Samą funkcjonalność tych operacji wydziel do klas ArchiveExtractor i ArchivePacker.


Mam rozumieć, że do samej obsługi archiwów potrzebuję aż trzech klas? Archiver, która będzie wywoływać klasy ArchiveExtractor i ArchivePacker?

Zrozum mnie jeśli to źle zrozumiałem, ale jakoś tych dwóch zdań nie mogę pojąć. Ja myślałem o czymś takim - klasa Archiver i w niej są dwie metody jedna pakuje druga rozpakowuje.
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(coomler @ 17.10.2010, 19:16:17 ) *
Mam rozumieć, że do samej obsługi archiwów potrzebuję aż trzech klas? Archiver, która będzie wywoływać klasy ArchiveExtractor i ArchivePacker?
W rzeczywistości ja napisałabym tu jeszcze więcej. Wspomniane wyżej zamieniłbym na interfejsy i dodał realizacje ZipArchiveExtractor, ZipArchivePacker.
Dzięki czemu możesz osiągnąć dużą elastyczność w implementacji, choćby dzięki strategii, którą można wykorzystać aby wprowadzić później użycie RarArchiveExtractor, e.t.c.

Skąd zdziwienie, że trzy klasy to dużo? Czemu uważasz to za problem? Małe klasy realizujące pojedynczą odpowiedzialność to coś do czego powinieneś dążyć.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 22:51