A, C は Header, Footer、
B は Item に Format とか Template とかその辺りの単語くっつけて、
D は Empty Message とかで、
それの頭に、Get とかつければメソッドっぽくなるかと。

っつーか、仮想メソッドでやるよりは、
ヘッダとかフッタのフォーマットを外部定義できるようにすればいい気も。
string ItemFormat = "<li> $$";
とかにしといて、"$$" を item で replace。
あと、SetItemFormat とか、外部ファイルから Load するメソッド書いて。