
// 1. ConcreteComponent:記憶體串流
MemoryStream ms = new MemoryStream();
// 2. Decorator:XmlTextWriter 裝飾 MemoryStream (半透明裝飾)
XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);
xtw.Formatting = Formatting.Indented;
// 3. 對裝飾物件操作會轉向本體
xmlDoc.Save(xtw); // 實際寫入 ms
// 4. 取得結果
byte[] buf = ms.ToArray();
txtResult.Text = Encoding.UTF8.GetString(buf, 0, buf.Length);
xtw.Close();
MemoryStream = ConcreteComponent (核心功能:位元組儲存)。XmlTextWriter = Decorator (增加 XML 格式化、編碼、縮排功能)。xtw 實際委派給 ms,體現「裝飾不改變介面、只增強行為」。XmlTextWriter 暴露額外方法 (Formatting 等),超出 Stream 介面。.NET 大量採用此模式:BufferedStream、CryptoStream、GZipStream 皆裝飾 Stream。