说一个ZipFile类和一个类Content ZipFile有一个load()方法,用于读取zip存档中所有文件的内容并将其放在Content对象中 什么是最合适的OOP设计?
1)ZipFile.load()将创建一个Content对象
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构造函数提供一个Content对象来填充
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这个的最佳方式。有什么建议可以考虑吗?预订?网站?
感谢您的帮助
答案 0 :(得分:2)
两种情况的概括是不同的:
第一种情况概括为ZipFile
知道其内容的具体类,并返回一些接口的实现。
第二种情况概括为ZipFile
知道其内容的接口,并接收一个具体的类(稍后进行初始化)。
换句话说,第一种情况是ZipFile
和任何具体的内容类。第二个将ZipFile
的客户与具体内容类联系起来。
鉴于ZipFile
很可能与其内容的特定具体类相关,第一个概括可能是更自然的。