0

所以我在程序设计方面非常业余。我在 uni 完成了一些课程,但它们都专注于学习语法和非常基本的设计原则。

无论如何,我正在用 C# .Net 编写一个通过 RPC 与 rtorrent 交互的客户端。我将 torrent 客户端信息存储在 ITorrentClient 接口中,并将 torrent 信息存储在 Torrent 对象中。要获取有关 torrent 的数据,它需要从 ITorrentClient 调用一个函数,例如:

class Torrent
{
    string _hash;
    ITorrentClient _client;

    public Torrent(ITorrentClient client)
    {
        this._client = client;
    }

    public double UploadSpeed
    {
        get
        {
            return _client.getTorrentUploadSpeed(_hash);
        }
    }
}

不幸的是,这意味着如果您的 torrent 客户端中有大量 torrent(就像我一样),您的内存中将有数百个浪费的 ITorrentClients。我如何设计我的程序,这样我就不会有数百个无用的对象漂浮在周围?

谢谢!

4

1 回答 1

1

如果您的实现ITorrentClient是引用类型(类)而不是值类型(结构),则_clienteach 的属性Torrent将包含对 的引用ITorrentClient不是实际的 object

考虑:

var client = new MyTorrentClient(); // TorrentClient implements ITorrentClient
var t1 = new Torrent(client);
var t2 = new Torrent(client);

MyTorrentClient内存中只有一个实例,t1t2持有对它的引用。

于 2012-09-19T09:31:01.053 回答