次のC#は抽象的である。これは、私が上記でファイルシステムツリーにこのデザインパターンは論理的ですか?あなたは私が<br> を達成しようとしています何の構造を見ることができるように
interface IComponent
{
void Render();
void Add(INode);
void Remove(INode);
}
class Folder : IComponent
{
List<IComponent> filesAndFolders = new List<IComponent>();
void Render()
{
Console.WriteLine("This is a folder, num childs: " +
}
void Add(IComponent add)
{
filesAndFolders.Add(add);
}
void Remove(IComponent rem)
{
filesAndFolders.Remove(rem);
}
}
class File : IComponent
{
void Render()
{
Console.WriteLine("This is a file");
}
void Add(IComponent add)
{
//do nothing... cant add folder to file
}
void Remove() { } //same as above
}
私の問題を表現するために使用していますコンポジット(GoFの)パターンコードは、私ができる
...私は追加と削除が実装されていないファイルを持っている今です:
- はアドオンを削除し、コンポーネントから削除し、その後私は、私はパターンAを壊しています信じていますビット。
- 補完パターン(デコレータ?)を使用して、葉と複合クラスのAddを変更します。たとえば、Folderに何らかの方法でFolder.AddFileOrFolder(Component)メソッドを持ち、FileにFile.AddSibling(File)メソッドを持たせます。
- 別のパターンを見てください。おそらく私はそれを間違っているか、私の要求についてもっと知らなくても何か不可能なことを達成しようとしていますか?例えば、いくつかの質問は、私が使用するパターンがオブジェクトの表示とどのようにやり取りされるべきか、およびユーザ入力がオブジェクトにどのように影響を及ぼすかである。
これらのファイルとフォルダは、実際にはリモートホスト上のオブジェクトの表現であり、ハードディスク上の重要なファイルやフォルダではありません。ユーザーインタラクションの1つは、アプリケーションの「ファイル」がデスクトップにドラッグされ、ファイルがダウンロードされるときです。
質問:
ユーザーが「仮想」ファイルとやりとりすると、結果がより速く表示されるように、アプリケーション内のファイルをキャッシュするのはどのようなトリックまたはテクニックでしょうか。
ありがとうございます。
私はこの回答を受け入れましたが、質問する前により良い検索を行った可能性があります。私はこれが私が望んだものだと信じています:http://stackoverflow.com/questions/1579520/is-the-composite-pattern-solid –