0

だから私はプログラムデザインでかなりアマチュアです。私は大学でいくつかのコースを受講しましたが、それらはすべて構文と非常に基本的な設計原則の学習に焦点を合わせています。

とにかく、私はRPCを介してrtorrentと対話するC#.Netでクライアントを作成しています。トレントクライアント情報をITorrentClientインターフェイスに保存し、トレント情報をTorrentオブジェクトに保存しています。トレントに関するデータを取得するには、ITorrentClientから関数を呼び出す必要があります。次に例を示します。

class Torrent
{
    string _hash;
    ITorrentClient _client;

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

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

残念ながら、これは、トレントクライアントに大量のトレントがある場合(私のように)、メモリに何百もの無駄なITorrentClientが存在することを意味します。何百もの役に立たないオブジェクトが浮かんでいないようにプログラムを設計するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

の実装がITorrentClient参照型(クラス)であり、値型(構造体)ではない場合_client、それぞれのプロパティは、実際のオブジェクトではなく、への参照Torrent保持します。ITorrentClient

検討:

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

MyTorrentClientメモリ内のインスタンスは1つだけであり、それへの参照を保持しますt1t2

于 2012-09-19T09:31:01.053 に答える