0

假设你有一个 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的最佳方法是什么是最好的方法上浪费了很多时间。有什么建议可以考虑一下吗?书?网站?

谢谢你的帮助

4

1 回答 1

2

这两种情况的概括是不同的:

第一种情况概括为ZipFile知道其内容的具体类,并返回接口的一些实现。

第二种情况概括为ZipFile了解其内容的接口,并接收一个具体的类(稍后初始化??)。

换句话说,第一种情况ZipFile结合了具体的内容类别。第二个将客户端ZipFile和具体内容类结合起来。

鉴于它的内容很可能ZipFile与特定的具体类一起使用,第一个概括可能是更自然的概括。

于 2010-12-17T18:39:33.053 回答