あなたはクラスZipFileとクラスのコンテンツと言ってください。
ZipFileには、zipアーカイブ内のすべてのファイルの内容を読み込んでContentオブジェクトに格納するload()メソッドがあります。
最も適切なOOPデザインは何ですか?ファクトリデザインではないときにオブジェクトが別のオブジェクトを生成するのはクリーンですか?
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を作成します
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();
を埋めるためにZIPファイルのコンストラクタに内容物を与える基本的には、それが優れていますオブジェクトを分離する(疎結合)? 旧式の手続き型プログラマとして、私はOOPを設計するいくつかの方法に疑問を呈することはできません。私はOOPこのへの最善の方法は何か」に多くの時間を失う。それを通じ考える何かアドバイスを?ブック?サイト?あなたの助けを
おかげ
コンストラクタの代わりに 'Content'オブジェクトを' load'関数に渡してみませんか?これは最初の例と同等です。 – lijie
各ZipFileにはContentがあるので、コンテンツはZipFileの一部として見えるかもしれないので、コンストラクタに渡します。しかし、私の質問は、各ソリューションの賛否両論についてです。 – Antoine