ファイルシステムを抽象化するクラスを作りました。
はじめは一般的と思われるcompositeパターンで実装していたのですが、
最適化をしていくうちにnamelistとdirectoryオブジェクトで構築する
COMのITEMIDLIST+IShellFolderのクローンができちゃったのですが、
もっとうまい構造はないでしょうか?

ITEMIDLIST+IShellFolderをそのまま使うのは、速度の点で納得できないのと、
Windows以外では使えないので。