ZipFile 클래스와 Content 클래스라고 해봅시다.
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를 만들 ZipFile를 생성자에게 기본적으로
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();
을 채우기 위해 콘텐츠 객체를 제공합니다 더 나은입니다 물체 분리 (느슨한 커플 링)? 구식 절차 프로그래머로서 나는 OOP를 디자인하는 몇 가지 방법에 대해 질문하는 것을 멈출 수 없다. 나는 그것을 통해 생각하는 무엇을 OOP이. 어떤 조언하는 가장 좋은 방법은 무엇입니까? 책? 웹 사이트 "에 많은 시간을 잃게? 당신의 도움에 대한
감사를 두 경우에 대한
왜 'Content' 객체를 생성자 대신에'load' 함수에 넣지 않으시겠습니까? 첫 번째 예와 더 비슷합니다. – lijie
각 ZipFile에 내용이 있으므로 내용을 ZipFile의 일부로 볼 수 있으므로 생성자에게 제공합니다. 그러나 제 질문은 각 솔루션의 장단점에 대한 것입니다. – Antoine