Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
【Design Patterns】Decorator 實作與應用
public Document PrintWord2(IList<AttachmentModel> attachments){
// 「封面一」 + 「空白頁」
MeetingMinutesWordPrinter cover1 = new MinutesCoverDocumentPrinter("(附件一)"); // 產生「封面一」的文件
MeetingMinutesWordPrinter conver1WithWhitePage = new WhitePageDecorator(cover1); // 將「封面一」文件後面加入「空白頁」
// 「附件」 + 「區塊」 + 「頁碼」
MeetingMinutesWordPrinter attachment = new MinutesAttachmentPrinter(attachments); // 產生「附件」的文件
MeetingMinutesWordPrinter attachmentWithPageNumber = new PageNumberDecorator(new NewSectionDecorator(attachment)); // 將「附件」文件區域加入「頁碼」顯示
// 「封面二」 + 「區塊」
MeetingMinutesWordPrinter cover2 = new MinutesCoverDocumentPrinter("(附件二)"); // 產生「封面二」的文件
MeetingMinutesWordPrinter cover2WithNewSection = new NewSectionDecorator(cover2); // 指定「封面二」區塊為獨立區塊,否則會被上面「頁碼」影響
// 「封面一」 + 「空白頁」 + 「附件」 + 「封面二」 => 「合併」 => 最終文件
MeetingMinutesWordPrinter resultWord =
new MergeDecorator(new MergeDecorator(conver1WithWhitePage , attachmentWithPageNumber) , cover2WithNewSection); // 將上面準備好的文件區塊「合併」成為一個最終文件
return resultWord.PrintDocument();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment