Sagen Sie eine Klasse ZipFile und eine Klasse Inhalt.
ZipFile verfügt über eine load() - Methode, um den Inhalt aller Dateien im ZIP-Archiv zu lesen und in ein Content-Objekt zu schreiben.
Was ist das am besten geeignete OOP-Design?Ist es für ein Objekt sauber, ein anderes Objekt zu erzeugen, wenn es nicht in einem Fabrikdesign ist?
1) ZipFile.load()
class ZipFile
{
public function load()
{
// Load all files in zip
// ...
Content content = new Content();
content->set(data);
return(content);
}
}
ZipFile zf = new ZipFile();
Content ct = zf->load();
ct->print();
B) Geben Sie dem ZipFile Konstruktor ein Content-Objekt ein Content-Objekt erstellen, wird
class ZipFile
{
private Content content;
public function ZipFile(content) // constructor
{
this->content = content;
}
public function load()
{
// Load all files in zip
// ...
this->content->set(data);
}
}
Content ct = new Content();
ZipFile zf = new ZipFile(ct);
zf->load();
ct->print();
Grundsätzlich zu füllen, ist es besser, Objekte trennen (lose Kopplung)? Als prozeduraler Programmierer der alten Schule kann ich nicht aufhören, die verschiedenen Möglichkeiten des Entwurfs von OOP in Frage zu stellen. Ich verliere viel Zeit auf: „Was ist der beste Weg, um OOP diese. Jede Beratung, es zu durchdenken? Buch? Website?
Danke für Ihre Hilfe
, warum Sie das 'Content' Objekt an die' load' Funktion anstelle des Konstruktor nicht geben? das wäre dem ersten Beispiel ähnlicher. – lijie
Der Inhalt könnte als Teil von ZipFile gesehen werden, da jede ZipFile einen Inhalt hat, also gebe ich es dem Konstruktor. Aber meine Frage ist mehr über die Vor- und Nachteile jeder Lösung. – Antoine